我有一个其构造函数带有Boost函数的类,我想用Google Mock对其进行测试。以下代码显示了一个示例类以及我对其进行测试的尝试:
MyClass.h:
#include <boost/function.hpp>
class MyClass
{
public:
MyClass(boost::function<void()> callback);
void callCallback();
private:
boost::function<void()> m_callback;
};
MyClassTest.cpp:
#include <gtest/gtest.h>
#include <gmock/gmock.h>
#include <boost/bind.hpp>
#include "MyClass.h"
class CallbackMock
{
public:
MOCK_METHOD0(callback, void());
};
TEST(MyClassShould, CallItsCallback)
{
CallbackMock callbackMock;
MyClass myClass(boost::bind(&CallbackMock::callback, callbackMock));
EXPECT_CALL(callbackMock, callback()).Times(1);
myClass.callCallback();
}
尝试在Visual Studio 2008中编译MyClassTest.cpp会出现以下错误:
该错误源于包含boost::bind的行。用void callback(){}替换模拟方法可以消除编译错误(但也可以避免使用Google Mock,无法达到目的)。我要尝试做的事情无需修改测试的类就可以吗?
最佳答案
我认为这行是错误的:MyClass myClass(boost::bind(&CallbackMock::callback, callbackMock));
最后一个参数应该是&callbackMock
关于c++ - 将Google Mock与boost::bind一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5584057/