- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个模拟。一次运行只应调用其中一个,我想在不知道给定先决条件的情况下使用期望来确定 execute()
函数是否成功。
如何实现?
Mock1 successMock;
Mock2 failMock;
EXPECT_CALL(successMock, performOnSuccess()).Times(1);
EXPECT_CALL(failMock, performOnFail()).Times(0);
execute(successMock, failMock);
以上任何一个都应该是有效的或低于预期,但只能是其中之一。
EXPECT_CALL(successMock, performOnSuccess()).Times(0);
EXPECT_CALL(failMock, performOnFail()).Times(1);
最佳答案
您期望的是一个(并且只有一个)协作者被调用。
一个可行的解决方案(如 other languages 中所述)是使这些模拟在测试范围内增加一个共享计数器。
您可以通过 defining actions 使用 GoogleMock 实现此目的.它会是这样的:
SuccessMock successMock;
FailMock failMock;
int callCounter = 0;
ON_CALL(successMock, performOnSuccess())
.WillByDefault(InvokeWithoutArgs([&]()
{
callCounter++;
});
ON_CALL(failMock, performOnFailure())
.WillByDefault(InvokeWithoutArgs([&]()
{
callsCounter++;
});
execute(successMock, failMock);
ASSERT_THAT(callsCounter, Eq(1));
话虽如此,这个测试有一些我不太喜欢的随机性。您应该最终得到一个预期失败的测试和另一个预期成功的测试。
我写了一个简化的 gist为了这。
关于c++ - 谷歌模拟 expect_call 取消另一个期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43786897/
A 类正在测试中,我希望 EXPECT_CALL 立即返回,并为模拟的 asyncfunc() 方法调用值为 200(右值引用)的 lamda 函数。请阅读符合代码的注释 #include "gtes
我的 mock 定义如下: template class ParseTreeMock : public ParseTreeInterface { public: MOCK_ME
有没有办法在函数的局部对象上使用 EXPECT_CALL? 例如: template std::string doSomethingWithTheCar() { T car; retu
我知道 EXPECT_CALL 应该用于模拟类及其对象/方法。但是有没有可能使用它来期望调用本地方法? void Sample::Init() { // some codes here...
我正在使用 gtest & gmock 并希望对使用集合调用的函数设置期望值。我想确保这个集合包含多个元素。 像这样: EXPECT_CALL(*mView, SetHighlightedCells(
我有一个类通过调用 subscribe(callbackfunction) 来“订阅”来自组件的信号。我现在正尝试通过保存回调并稍后向其发送数据以测试该组件的其他部分来使用 gtest/gmock 测
我有一个类,其中包含几个相互依赖的方法。让我们说 foo()、bar() 和 baz()。 当我测试 bar() 时我需要模拟 foo() 的行为,当我测试 baz() 时我需要模拟 bar() 的行
我有一个用于串行接口(interface)的简单模拟类: class MockSerialPort : public drivers::SerialPort { public: MockS
我有一些期望,比如 EXPECT_CALL (...) EXPECT_CALL(t1, foo()).Times(1); 我想创建相反的。 我期望某个函数不会被执行 . 我应该使用什么方法? 类似 E
我有两个模拟。一次运行只应调用其中一个,我想在不知道给定先决条件的情况下使用期望来确定 execute() 函数是否成功。 如何实现? Mock1 successMock; Mock2 failMoc
#include "gtest\gtest.h" using namespace testing; class MyGTest : public Test { public: void f()
我有一个类,其构造函数调用一个成员函数,该成员函数又调用其他成员函数。我想使用 GMock 创建一个模拟类,并验证在构造模拟类对象时,这些成员函数在构造过程中被调用了一次。但我观察到以下困境: 一方面
我是 Gmock 的新手。我尝试了一个例子,但它是错误的。我也引用了该组的一些帖子,但对我没有帮助。 class MATH { public: virtual ~MATH(){} virt
测试用例应断言调用了资源的方法tagcache(),以确保更新资源的标签缓存。我知道调用了该方法,但测试失败,因为: Expected: to be called at least once Actu
我在 C 中有以下代码想使用谷歌测试框架进行测试: a.h void getValue(int age, int * value); a.c #include void getValue(int a
我刚刚开始使用 GoogleTest 和 GoogleMock。阅读"for dummies" documentation该示例测试依赖于 Turtle 的 Painter 类: 真实对象-Turtl
Google Mock documentation说: Important note: Google Mock requires expectations to be set before the m
我必须遵循模拟函数 DoSomething(const char* par0, const char* par2) DoSomething2(std::string); 我将 DoSomething
struct obj { int a; string str; string str2; bool operator==(const obj& o) const { if
我对 Google Mock 还是很陌生,所以边学边学。我刚刚添加了一些单元测试,但遇到了一个问题,我无法让 ON_CALL() 正确地 stub 从方法内部调用的方法。 下面的代码概述了我所拥有的;
我是一名优秀的程序员,十分优秀!