我的类的构造函数是
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/