gpt4 book ai didi

c++ - 关闭顺序

转载 作者:太空狗 更新时间:2023-10-29 21:22:53 26 4
gpt4 key购买 nike

我有这样一个模拟类:

struct MockClass {
MOCK_METHOD0(beginTransaction, void ());
MOCK_METHOD0(doSomething, void ());
MOCK_METHOD0(doSomethingElse, void ());
MOCK_METHOD0(commit, void ());
};

我想测试 beginTransaction() 是否在调用 doSomething()doSomethingElse() 之前被调用,以及 commit () 在最后被调用。我是这样做的:

{
InSequence s;
EXPECT_CALL(*mockObject, beginTransaction());
EXPECT_CALL(*mockObject, doSomething());
EXPECT_CALL(*mockObject, doSomethingElse());
EXPECT_CALL(*mockObject, commit());
}

这行得通,但它超出了预期。我不关心 doSomething()doSomethingElse() 的顺序,只关心 beginTransaction() 在一开始就被调用, commit() 在最后调用。有什么办法吗?

最佳答案

这样的东西行得通吗?不幸的是,我还无法对其进行测试。

Expectation e1 = EXPECT_CALL(*mockObject, beginTransaction());
Expectation e2 = EXPECT_CALL(*mockObject, doSomething()).Times(AnyNumber()).After(e1);
Expectation e3 = EXPECT_CALL(*mockObject, doSomethingElse()).Times(AnyNumber()).After(e1);
EXPECT_CALL(*mockObject, commit()).After(e1, e2, e3);

这基本上是说 beginTransaction() 必须被调用,而且它必须在任何其他调用之前发生。然后可以调用 doSomething()doSomethingElse() 任意次数(包括 0 次)。最后,必须在调用其他函数之后调用 commit()

关于c++ - 关闭顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19660715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com