我想在A类中测试方法“methodToTest”:
typedef std :: function F_global;
struct A
{
F_global m_F_global;
A(F_global m_F_global) : p_F_global(m_F_global) {}
void methodToTest()
{
m_F_global(5);
}
};
我有一个模拟课:
class RunMock {public:MOCK_METHOD1(run,void(int)); };
下面我有一个测试用例:
class TestClass : public testing::Test
{
protected:
void SetUp();
std::unique_ptr<A> m_aa;
std::unique_ptr<RunMock> m_runMock;
};
void UecSimplePortTestSuite::SetUp()
{
m_aa = make_unique<A>(m_runMock->run);//IT DOESN'T WORK I DON'T KNOW HOW TO FORWARD A METHOD run from RunMock to constructor
}
TEST_F(UecSimplePortTestSuite, testForwardMessage)
{
EXPECT_CALL(*m_runMock, run(_));
m_aa->methodToTest();
}
一般来说,我不知道在“UecSimplePortTestSuite :: SetUp()”中如何从Mock类“RunMock”传输方法“run” . 我想这样做,因为我想“EXPECT_CALL(* m_runMock,run(_));”在UecSimplePortTestSuite.testForwardMessage中测试“methodToTest()” . 我认为好主意可能是使用lmbda,std :: boost :: bind或类似的东西 .
1 回答
您可以将lambda传递给
SetUp()
中A
的构造函数:这个 :
不会做你喜欢的事情,这是一个编译错误 . 你可以阅读this parashift QA和here如何使用指向成员函数的指针 .