클래스 A에서 메서드 "methodToTest"를 테스트하고 싶습니다.Google 테스트에서 std :: function을 사용하여 메소드를 테스트하는 방법은 무엇입니까?
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();
}
은 일반적으로 내가에서 모의 클래스 "RunMock"에서 방법 "실행"을 전송하는 방법을 모른다 "UecSimplePortTestSuite :: 설정()"나는 테스트 케이스를 가지고 아래
. 내가 "EXPECT_CALL (* m_runMock, run (_));"을 원합니다. UecSimplePortTestSuite.testForwardMessage에서 "methodToTest()"를 테스트하십시오. 좋은 생각은 lmbda, std :: boost :: bind 또는 이와 비슷한 것을 사용할 수 있다고 생각합니다.
m_runMock->run
무엇을 당신에게 일을하지 않을, 그리고 그것은이다 : 이것은
m_runMock.reset(new RunMock);
m_aa.reset(new A([&](int value){ m_runMock->run(value); });
:
감사합니다. 그것은 작동합니다. –