改变 gmock 期望



我有一个单元测试,我想用GMock编写。 但是,我熟悉的主要是Mockito。 我会在Mockito中写的是:

Mockito.verify(mock, Mockito.never()).someFunctionCall(Matchers.<String>any());
doSomething(mock);
Mockito.verify(mock, Mockito.times(1)).someFunctionCall(Matchers.<String>any());
doSomethingElse(mock);

这对应于验证doSomething从不调用someFunctionCall,但只被doSomethingElse调用一次。

我将如何使用GMock完成同样的事情?

EXPECT_CALL(mock, someFunctionCall(_)).Times(0);
doSomething(mock);
EXPECT_CALL(mock, someFunctionCall(_)).Times(1);
doSomethingElse(mock);

显然是行不通的,因为期望叠加。

Mock::

VerifyAndClearExpectations/Mock::VerifyAndClear 可用于这些目的。

对于这样的事情,您可能需要设置两个不同的测试。一个用于doSomething,一个用于doSomethingElse。或者,如果第二个的行为取决于第一个,您可以执行以下操作:

{
  MyMock mock;
  EXPECT_CALL(mock, someFunctionCall(_)).Times(0);
  doSomething(mock);
}
{
  MyMock mock;
  EXPECT_CALL(mock, someFunctionCall(_)).Times(1);
  doSomethingElse(mock);
}
断言的验证

是在对象销毁时完成的,因此将每个模拟的范围限定为所需的调用集将验证断言。但实际上,我可能会尝试将这两种方法的测试分成单独的测试。如果您有不想重复的样板设置,请将其粘贴到TEST_F派生的基类中。

相关内容

  • 没有找到相关文章

最新更新