Gmock在ON_CALL中指定EXPECT_CALL的操作

时间:2020-06-04 10:00:56

标签: googlemock

如果我们将gmock中的默认操作移动到一个单独的c ++文件中,并且在测试时我们使用Expect_call,但是要获取on_call中指定的默认操作,我们可以这样做吗?

1 个答案:

答案 0 :(得分:0)

是的,这是可能的,但是请记住,默认操作/期望调用是在对象上设置的,因此您需要在测试中使用的同一对象上调用ON_CALL/EXPECT_CALL,即:

//模拟.h

#pragma once 

#include <gmock/gmock.h>

struct MyMock {
    MOCK_METHOD0(test, bool());
};

void set_default_action(MyMock& mock);

//模拟.cpp

#include "mock.h"

void set_default_action(MyMock& mock) {
    ON_CALL(mock, test()).WillByDefault(testing::Return(true));
}

// test.cpp

#include <gmock/gmock.h>
#include <gtest/gtest.h>

#include "mock.h"

using namespace testing;


TEST(CppMockTest, test_on_call_from_cpp) {
    MyMock m{};

    ASSERT_FALSE(m.test());

    set_default_action(m);

    ASSERT_TRUE(m.test());
}