考虑到C ++的具体细节,Google C ++ Mocking Framework(或简称Google Mock)是一个用于编写和使用C ++模拟类的库。
如何让 gmock 对象返回固定的 std::forward_list
我正在尝试编写这个测试: 测试(AccountServiceShould,print_a_statement_containing_all_transactions){ 自动 transactionRepository = 新 TransactionRepositoryMock; std::forward_list 我正在尝试编写这个测试: TEST(AccountServiceShould, print_a_statement_containing_all_transactions) { auto transactionRepository = new TransactionRepositoryMock; std::forward_list<model::Transaction *> transactionList; auto statementPrinter = new StatementPrinterMock; transactionList.assign({transaction("22/12/2019", 1000)}); ON_CALL( *transactionRepository, all() ) .WillByDefault(Return(transactionList)); Clock *myClock = new Clock; auto accountService = new AccountService(transactionRepository, myClock); EXPECT_CALL(*statementPrinter, print(Eq(transactionList))); accountService->printStatement(); delete accountService; delete transactionRepository; delete myClock; delete statementPrinter; } 我在编译时遇到错误: No viable conversion from 'internal::ReturnAction<forward_list<Transaction *, allocator<Transaction *>>>' to 'const Action<std::forward_list<model::Transaction, std::allocator<model::Transaction>> ()>' candidate template ignored: requirement 'internal::disjunction<std::is_constructible<std::function<std::forward_list<model::Transaction, std::allocator<model::Transaction>> ()>, testing::internal::ReturnAction<std::forward_list<model::T... candidate template ignored: could not match 'Action' against 'ReturnAction' explicit constructor is not a candidate candidate template ignored: could not match 'OnceAction' against 'Action' candidate template ignored: requirement 'conjunction<testing::internal::negation<std::is_same<void, std::forward_list<model::Transaction, std::allocator<model::Transaction>>>>, testing::internal::negation<std::is_reference<std::forward_... passing argument to parameter 'action' here 我不明白问题出在哪里。我尝试更改 transactionList 的类型,使用动态对象,甚至创建了自己的 MATCHER_P,但我无法弄清楚这个。 我不是 C++ 专家,恰恰相反。 谢谢! 应该是评论,但是字符太多了。 没有可行的转换 forward_list<Transaction *, allocator<Transaction *>> 到 std::forward_list<model::Transaction, std::allocator<model::Transaction>> 所以,我90%(因为ofc你没有在问题中包含相关信息)确定你有一个拼写错误,因为你的模拟返回std::forward_list<Transaction>并且你尝试返回std::forward_list<Transation*>。 编译没有问题: struct Transaction {}; class TransactionRepositoryMock { public: MOCK_METHOD(std::forward_list<Transaction*>, all, ()); }; TEST(AccountServiceShould, print_a_statement_containing_all_transactions) { auto transactionRepository = new TransactionRepositoryMock; std::forward_list<Transaction*> transactionList; transactionList.assign({new Transaction}); ON_CALL(*transactionRepository, all()).WillByDefault(Return(transactionList)); }
我对 C++ 和单元测试相当陌生,我现在正在学习使用 Google Mock 和 Google Test 来测试我正在使用的一些代码。而不是编写所有 Google Mock 方法手册...
我想使用 WhenDynamicCastTo(m) 来自:https://google.github.io/googletest/reference/matchers.html#pointer-matchers 但我想要动态转换的是在shared_ptr中并且
Lambda 读取 constexpr 值而不在 gmock 匹配器中捕获它
根据Lambda表达式: 如果变量 (...) 是 constexpr 并且没有可变成员,则 lambda 表达式可以读取变量的值而不捕获它 在下面的例子中,我认为...
google 测试:MOCK_METHODn(旧式)- 带有 char** 参数的函数
我正在使用旧版本的谷歌测试,使用 MOCK_METHODn(旧式)宏。我正在尝试为带有 char** 参数的虚函数创建模拟方法并收到编译错误。 做...
问候所以我有一个如下所示的界面 A类接口{ 民众: /// =A 可以处于的不同状态 枚举类状态{ 闲置的, 忙碌的 }; 结构 AMetad...
我正在尝试使用 Google Test 检查函数调用(模拟方法)的顺序,但是当函数调用循环发生时我遇到了问题。在下面的例子中,DummyClass 是 moc...
我在 C# 中进行了此练习,我正试图将其转换为 C++。 我想像在 C# 中一样使用匹配器进行一些谷歌测试来检查集合内容。容器中的元素...
如何读取传递给使用 googlemock 模拟的方法的数组指针的内容?
我正在将一个指向数组的指针传递给一个函数,我正在用 googlemock 模拟它。我想验证参数的内容,这适用于标量,但我只能获取...
我正在尝试模拟模板化方法。 这是包含 mock 方法的类: 我的班级 { 民众: 虚拟 ~myClass() {} 模板 void myMethod(T par...
需要使用 gooogletest gmock 测试 C 风格回调函数的建议。 测试用 std::function 定义的回调很容易。 这两个主题很有帮助: 使用谷歌测试来检查电话...
谷歌测试错误:未知文件:“模拟函数没有默认操作集,其返回类型没有默认值集。”
有了这个错误,我知道它报告说没有针对模拟的默认操作。 但是,在我的代码中已经有对 EXPECT_CALL 的操作。 我的其他测试用例也很好
有没有办法在不考虑顺序的情况下比较两个字符串的内容?即 edcc 和 cdce 是真的,因为每个字母的频率和字母本身匹配 例如,以下...
我是 gtest/gmock 的新手。我正在尝试为 C++ 程序实施单元测试。但是当我尝试编译它时。我遇到了与 gmock 的链接错误。这个特定的错误是相关的测试::内部::
测试 std::unordered_map 中的内容而不用担心顺序
我正在检查输出的字符串是否与预期的匹配,而不用担心它们的打印顺序。 在这里,std::unordered_map 将 A 对象存储为值...
请帮助我修复第三方库的 `MOCK_METHOD` 实现中的 `undefined reference` 错误
如果您需要试验,这里是 godbolt 链接 https://godbolt.org/z/oM3Kz6b69。 我必须对 Receiver 类方法进行单元测试。为此,我正在为所有使用的方法/定义实现模拟......
Googlemock EXPECT_CALL 失败并出现错误:“operator==”不匹配(操作数类型为“const XX”
我是第一次使用 googlemock/test。编译错误来自以下行: EXPECT_CALL(orderWriter, writeOrders(aNonZeroSizeOrder)) .次(1); 错误: 错误:'operator==' 不匹配
我想在我的测试夹具类中添加一个实用函数,它将返回一个具有特定期望/操作集的模拟。 例如。: 类 MockListener:公共监听器 { // 谷歌模拟方法。 ...
使用谷歌测试,我想为一个函数设置期望(或默认行为),该函数提供多个数据作为输出参数,包括一个固定大小的数组,一个指针被传递到该数组。使用
How to EXPECT_CALL a specific version of a method?
我有一个具有相同命名方法的 2 个不同版本的类: MOCK_METHOD0(CmdData, char*()); MOCK_CONST_METHOD0(CmdData, const char*()); 如何为它们中的每一个设置 EXPECT_CALL? 这是...