unit-testing - GTEST:实际函数调用计数与 EXPECT_CALL 不匹配
问题描述
我正在 gtest 中学习 GMock。我有以下情况
class Observer
{
public:
virtual void StartObserver(const std::string&, const int&) { }
};
class MockObserver : public Observer
{
public:
MOCK_METHOD2(StartObserver, void(const std::string &, const int &));
};
class Worker
{
private :
std::shared_ptr<observer> mObserver = nullptr;
public :
void StartObserver(const std::string& str, const int& val)
{
mObserver->StartObserver(str, val);
}
void RegisterObserver(std::shared_ptr<Observer> observer)
{
mObserver = observer;
}
};
在我的测试功能中,我进行了如下测试
TEST_(AppTest, Test_Observer)
{
Worker w;
std::shared_ptr<MockObserver> mockObserver = std::make_shared<MockObserver>();
w.RegisterObserver(mockObserver); //instead of actual ObserverObject I passed mockObserver here
EXPECT_CALL (*mockObserver, StartObserver(_, _)).Times(1).WillOnce(::testing::Return());;
w.StartObserver("hello", 100);
}
在运行 gTest 时,我在此测试中遇到错误
Actual function call count doesn't match EXPECT_CALL(*mockObserver, StartObserver(_, _))...
Expected: to be called once
Actual: never called - unsatisfied and active
我的代码有什么问题吗?
解决方案
推荐阅读
- c++ - 在没有默认构造函数的情况下实例化头文件中声明的变量
- python - 为什么 lxml 会切出一段 XML 文件?
- google-play - 不同的 orders.refund 和 purchase.subscriptions.refund 用于 GooglePlay IAP 上的订阅退款
- pine-script - Pinescript(Tradingview)每次都停止并限制不工作
- android - 如何在小部件中强制使用夜间/白天资源?
- python-3.x - 如果后代进程也使用多处理,Python如何防止多处理僵尸
- python-3.x - WritePrinter 失败并显示“需要一个类似字节的对象,而不是打印时的‘str’”
- typescript - TypeScript Compiler API:获取类型结构
- java - Android 不喜欢 Firestore 中的 .add
- openshift - 类似 [lab-user@studentvm 0 ~]$ oc get pods 错误:缺少或不完整的配置信息