c++ - 将 lambda 作为参数的函数的 gmock expect_call 编译失败
问题描述
我正在使用 gtest/gmock 为我的班级编写单元测试。单元测试代码编译失败。
模拟声明是
MOCK_METHOD2(GetFilesFromDirectory, std::shared_ptr<std::list<WIN32_FIND_DATAW>>(const std::wstring &directory, std::function<bool(const WIN32_FIND_DATAW &)> filter));
然后我在其他方法的测试用例中为此方法编写了一个 EXPECT_CALL,如下所示,编译失败。
std::function<bool(const WIN32_FIND_DATAW &)> filesFilter = [](const WIN32_FIND_DATAW &fileData) -> bool {
return true;
};
EXPECT_CALL(*mock, GetFilesFromDirectory(std::wstring(L"testDirectory"), filesFilter)).WillOnce(Return(fileListPtr));
我得到的错误是
错误 C2678 二进制“==”:未找到采用“const std::function”类型的左操作数的运算符(或没有可接受的转换)
我想知道为什么会发生此错误以及如何解决此问题。
解决方案
推荐阅读
- python - python程序将多个excel文件合并到一个带有单独工作表的工作簿中
- javascript - 是否可以链接到具有不同 CSS 条件的同一页面,具体取决于我单击的链接?
- c++ - 获取操作系统和版本号
- github - 使用 Google Colab 克隆私有存储库的步骤
- python - Python 除了 ValueError: While True
- pandas - PySpark:在新 Spark DataFrame 上使用现有 Spark DataFrame 的 Schema
- python - Python Selenium 查找元素(输入)
- javascript - 不能在模块中使用 console.log()
- laravel - 使用 Laravel 7 和 livewire 1.0.13 时如何解决错误
- react-native - 使用 React Native 可访问的货币数字