我想了解谷歌模拟中的一些构造是如何实现的。具体来说,我想了解下面的
EXPECT_CALL
块中的 InSequence
(取自其文档)如何能够验证参数的顺序以及调用的顺序。是的,对宏进行逆向工程可以有所帮助,但是通过大图简化的内部结构概述以及所使用的技术示例将对整个社区有所帮助。
TEST(FooTest, DrawsLineSegment) {
...
{
InSequence seq;
EXPECT_CALL(turtle, PenDown());
EXPECT_CALL(turtle, Forward(100));
EXPECT_CALL(turtle, PenUp());
}
Foo();
}
我不知道它到底是如何完成的,但我想你可以在
Insequence
的构造函数中初始化一些全局状态并记录其中 EXPECT_CALL()
的顺序。然后,在检查呼叫时仅验证下一个相应记录,而不是像往常一样验证所有记录。