gpt4 book ai didi

c++ - 如何区分在同一行上创建的 gmock 期望

转载 作者:太空宇宙 更新时间:2023-11-04 12:47:01 25 4
gpt4 key购买 nike

我有一些测试代码可以设置这样的期望:

InSequence seq;
for (auto const& p : scenario) {
ON_CALL(mock_object, query(p.input))
.WillByDefault(Return(p.result));
}

不幸的是,这使得难以识别失败的期望,因为它们都在同一行上报告。

有没有办法将一些描述附加到期望中,在失败的情况下出现在输出中?

最佳答案

我现在明白你的问题了。不幸的是,googletest 似乎没有提供覆盖默认 EXPECT_CALL 失败消息的可能性(如果确实可行,请有人纠正我)。如果您的测试使用错误的参数调用 mock_object::query,您将获得描述性很好的错误消息,但如果它根本不调用该方法则不会。作为绕行,您可以尝试以下 hack:

class SomeMock {
public:
MOCK_METHOD1(doSth, bool(const int& num));
};

TEST(xxx, yyy) {
SomeMock mock_object;
for (auto const& p : {1, 2, 3, 4, 5, 6, 7}) {
EXPECT_CALL(mock_object, doSth(p)).WillOnce(Invoke(
[](const int& i) {
std::cout << "i: " << i << std::endl; return true;
}));
}
for (auto const& p : {1, 2, 3, 4, 5}) {
mock_object.doSth(p);
}
}

知道哪些 EXPECT_CALL 已经得到满足。或者您可以使用 --gmock_verbose=info 选项来达到类似的效果。

关于c++ - 如何区分在同一行上创建的 gmock 期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50986645/

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