我正在调查使用模拟进行单元测试我正在添加到现有代码中。为此,我正在使用HippoMocks。这涉及另一个类在我的模拟上调用一些方法(都是虚拟的)。我想避免过度指定所有这些,但每当另一个类调用我未指定的模拟函数时,HippoMocks会继续抛出NotImplementedException
。
以下代码暴露了我的问题。
void test()
{
class SimpleClassToMock
{
public:
virtual void memberFunction1() {}
virtual void memberFunction2() {}
};
MockRepository mocks;
// true or false here makes no difference.
mocks.autoExpect = true;
SimpleClassToMock* m = mocks.Mock<SimpleClassToMock>();
// I care about this function getting called.
mocks.ExpectCall(m, SimpleClassToMock::memberFunction1);
m->memberFunction1();
// HippoMocks fails on the next line by throwing NotImplementedException.
m->memberFunction2();
}
有没有办法告诉HippoMocks不要在这里失败?我只想指定我对特定测试所关心事物的期望,而不是每一个被调用的东西。
PS:对于那些有嘲弄经验的人,我是否认为这一切都错了?是否过度指定测试,例如这不是问题/“你想要什么”?答案 0 :(得分:1)
为避免过度指定,您可以使用OnCall
允许它们被调用0-N次(可选择使用参数检查,命令检查等)。