【发布时间】:2026-01-14 10:25:02
【问题描述】:
我想在 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);
}
};
我有一个模拟类:
类 RunMock { 民众: MOCK_METHOD1(运行,无效(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 或类似的东西。
【问题讨论】:
标签: c++ unit-testing testing googletest googlemock