EXPECT_CALL返回"Actual: never called - unsatisfied and active"



我有以下场景,我调用EXPECT_CALL将函数Foo的返回值设置为true,但我得到以下错误

Actual: never called - unsatisfied and active

我看到的一件重要的事情是将一个对象传递给EXPECT_CALL,这里就是这种情况。如同在classPtr中一样,是指向MockClass对象的有效指针。

//测试类别

class Feature
{
[[maybe_unused]] virtual bool Foo(const std::string& digit, int number);
};

//模拟类

class MockClass : public Feature
{
public:
MOCK_METHOD(bool, Foo, (const std::string& digit, int number),
(override));
};

//测试等级

class UtClass : public Ut
{
public:
std::unique_ptr<MockClass> classPtr = std::make_unique<MockClass>());
}
TEST_F(UtClass, Test)
{
EXPECT_CALL(*classPtr, Foo("A", 5))
.WillOnce(Return(true));   // Actual: never called - unsatisfied and active
}
  1. 您不调用Foo"从未打过";是预期的错误
  2. 您应该创建并销毁MockClass,在测试用例TEST_F(UtClass, Test)中使用本地MockClass mock_class,否则您将收到有关mock对象泄漏的错误

应该是这样的

class Feature {
[[maybe_unused]] virtual bool Foo(const std::string& digit, int number);
};
class Consumer {
public:
bool Eat(Feature *f) {
return f->Foo("A", 5);
}
};
class MockClass : public Feature {
public:
MOCK_METHOD(bool, Foo, (const std::string& digit, int number), (override));
};
class UtClass : public ::testing::Test {
};
TEST_F(UtClass, Test) {
MockClass mock;
EXPECT_CALL(mock, Foo("A", 5)).WillOnce(Return(true));
Consumer consumer;
consumer.Eat(&mock);
}

相关内容

最新更新