googlemock的InSequence机制是如何实现的

问题描述 投票:0回答:1

我想了解谷歌模拟中的一些构造是如何实现的。具体来说,我想了解下面的

EXPECT_CALL
块中的
InSequence
(取自其文档)如何能够验证参数的顺序以及调用的顺序。是的,对宏进行逆向工程可以有所帮助,但是通过大图简化的内部结构概述以及所使用的技术示例将对整个社区有所帮助。

TEST(FooTest, DrawsLineSegment) {
  ...
  {
    InSequence seq;

    EXPECT_CALL(turtle, PenDown());
    EXPECT_CALL(turtle, Forward(100));
    EXPECT_CALL(turtle, PenUp());
  }
  Foo();
}
c++ googletest googlemock
1个回答
0
投票

我不知道它到底是如何完成的,但我想你可以在

Insequence
的构造函数中初始化一些全局状态并记录其中
EXPECT_CALL()
的顺序。然后,在检查呼叫时仅验证下一个相应记录,而不是像往常一样验证所有记录。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.