1

我正在研究使用模拟进行单元测试,我正在添加到现有代码中。为此,我正在使用HippoMocks。这涉及另一个类调用我的模拟上的一些方法(都是虚拟的)。NotImplementedException我想避免过度指定所有这些,但是每当其他类在我的模拟上调用我没有指定的函数时,HippoMocks 就会继续抛出。

下面的代码暴露了我的问题。

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:对于那些有嘲笑经验的人,我认为这一切都错了吗?在这种情况下过度指定测试不是问题/“你想要什么”?

4

1 回答 1

1

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

于 2017-01-20T10:00:25.947 回答