c++ - 如何模拟方法返回 istream&?

标签 c++ c++11 googlemock istream

我模拟了返回 istream& 的虚拟方法。我想在测试用例中使用它。如何返回一些值?

问题是 istream 是不可复制的。

我尝试这样的事情:

TEST(x, y)
{
     MockClass mock;
     std::istringstream str("Some text");

     EXPECT_CALL(mock, m(_)).WillOnce(Return(str)); // m method returns std::istream&

     sut.callMethod();
}

最佳答案

您应该使用 ReturnRef() 而不是 Return()。引用 gmock 备忘单:

https://github.com/google/googletest/blob/master/docs/gmock_cheat_sheet.md#returning-a-value

关于c++ - 如何模拟方法返回 istream&?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36308015/

相关文章:

c++ - 为什么缩小转换不能防止错误类型的 map.insert() 失败?

c++ - 如何在 C++ 正则表达式中捕获 0-2 组并打印它们?

c++ - 如何模拟模板化类中的函数?

c++ - GMock : How to return a fuction pointer defined by an EXPECT_CALL()

c++ - 覆盖 Ctrl-C

c++ - 为什么 void setOutputFormat(ostream out, int decimal_places) 会导致错误?

c++11 - cocos2dx 3.0如何调用callfunc函数

c - 如何测试C中函数调用的顺序?

c++ - 标准 move 中没有拷贝的分配

c++ - 在我的 C++ 程序中有一种方法可以检查 CPU 是否有 AES-NI