如果我们将gmock中的默认操作移动到一个单独的c ++文件中,并且在测试时我们使用Expect_call,但是要获取on_call中指定的默认操作,我们可以这样做吗?
答案 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());
}