不指定期望时,HippoMocks会抛出NotImplementedException

时间:2017-01-09 12:02:30

标签: c++ unit-testing hippomocks

我正在调查使用模拟进行单元测试我正在添加到现有代码中。为此,我正在使用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:对于那些有嘲弄经验的人,我是否认为这一切都错了?是否过度指定测试,例如这不是问题/“你想要什么”?

1 个答案:

答案 0 :(得分:1)

为避免过度指定,您可以使用OnCall允许它们被调用0-N次(可选择使用参数检查,命令检查等)。