我根据收到的事件类型匹配模拟侦听器的结果。我想要定义的期望是“你应该一次接收这种类型的事件并断言以下一次。任何其他事件对我来说都无关紧要。”
这是我到目前为止所写的断言
EXPECT_CALL(listener, changed(Field(&Event::type, Event::Type::processed)).WillOnce(/*Blablabla*/);
理论上我的听众应该接到两个电话。一个事件:: Type :: processed和一个Event :: Type :: done。我明确地不想“断言”关于后者的任何事情。 似乎Matcher将成功匹配Event :: Type :: processed,触发WillOnce ......但会在测试结束时告诉我我的期望Times(1)已经饱和,因为尽管它没有' t匹配第二个事件(Event :: Type :: processed)它仍然增加了这个期望的整体计数器......
这太烦人了,我无法找到解决办法 毋庸置疑,VerifyAndClear在这里不会有所帮助,因为这两个事件在一次调用中发生,我不打算将它解耦,这对我的模型来说毫无意义。
答案 0 :(得分:0)
{
testing::InSequence s;
EXPECT_CALL(listener, changed(Field(&Event::type, Event::Type::processed)).WillOnce(/*Blablabla*/);
EXPECT_CALL(listener, changed(_)).Times(testing::AnyNumber());
}
应该为你做的伎俩。