unit-testing - 如何使用 gmock 模拟 std::function?

标签 unit-testing testing tdd googletest googlemock

我的类的构造函数是

A( ...
   std::function<bool(const std::string&, const std::string&)> aCallBack, 
   ... );

我想用 EXPECT_CALL 来测试一下。这个回调来自另一个 B 类。我创建了一个模拟

class BMock : public B
{
    MOCK_METHOD2( aCallBack, bool(const std::string&, const std::string&) );
}

然后我试了一下

B *b = new B();
std::function<bool(const std::string&, const std::string&)> func = 
    std::bind(&B::aCallBack, b, std::PlaceHolders::_1, std::PlaceHolders::_2);

还是不行。如何获取 gmock 对象的函数指针?

谢谢!!

最佳答案

如果你想使用 mock 来跟踪调用和设置返回值,你可以使用 MockFunction .

using testing::_;
using testing::MockFunction;
using testing::Return;

MockFunction<bool(const std::string&, const std::string&)> mockCallback;

EXPECT_CALL(mockCallback, Call(_, _)).WillOnce(Return(false)); // Or anything else you want to do

A( ...
   mockCallback.AsStdFunction()
   ...);

关于unit-testing - 如何使用 gmock 模拟 std::function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42521088/

相关文章:

django - 为什么在运行单元测试时两次导入 django 设置,并创建两次测试数据库?

java - 使用 Mockito 验证是否使用包含子字符串的参数调用了方法

c++ - 使用Google Test对自定义Assert函数进行单元测试

c++ - 另一个单元测试/代码覆盖问题。我的方法明智吗?

TDD:从哪里开始第一次测试

reactjs - 如何模拟模块中的特定功能

java - 即使测试失败,Gradle 也会在测试阶段后执行任务

unit-testing - 使用 Behat 2.0,我应该把步骤放在哪里?

javascript - 使用 Jasmine 或任何其他替代方案在 Node 上运行测试 .mjs/ESM

c# - 通过TDD创建映射函数 : Too Much Time Spent Writing Tests?