我看过很多解释如何使用 NMock 来期待异常的帖子。但这不是我想知道的。就我而言,我正在测试幸福的道路。但是只要在 try/catch 中调用模拟上调用的方法,看起来 NMock 就会抛出异常。所以假设我在我正在测试的类中有一个方法:
class MyClass
{
public MyClass(some_type obj)
{
m_member = obj;
}
public void Func()
{
try
{
m_member.some_function()
}
catch (System.Exception e)
{
// do something
}
}
private some_type m_member;
}
在这个类的单元测试中,我在 MyClass 中对这个 Func 进行了测试,以测试快乐的路径:
[Test]
public void TestFunc()
{
MockFactory mock_factory = new MockFactory();
Mock<some_type> mock = mock_facoty.CreateMock<some_type>();
MyClass uut = new MyClass();
mock.Expects.One.MethodWith(_ => _.some_function());
uut.Func();
mock_facoty.VerifyAllExpectationsHaveBeenMet();
mock_facoty.ClearExpectations();
}
这个单元测试一直失败。如果我删除代码中的 try/catch 并执行(第 8 - 18 行):
public void Func()
{
//try
//{
m_member.some_function()
//}
//catch (System.Exception e)
//{
// // do something
//}
}
该测试将正常工作。
有谁知道为什么会这样?我怎么能做到这一点?非常感谢!