【发布时间】:2021-05-04 08:29:17
【问题描述】:
我正在使用谷歌测试并试图模拟一个返回未来的方法。我正在做的是在测试用例中创建一些未来对象,然后我执行“when(mock.Call()).thenReturn(myFutureObject),但我得到一个错误”使用已删除的函数 std::future<_res> ::future(const std::future<_res>&)"。
这是代码:
std::promise<MyClass> pr;
std::future<MyClass> fut { pr.get_future() };
std::cout << fut.valid() << std::endl; // this returns 1 so it seems I have a valid future object
EXPECT_CALL(mockSvc, mymethod()).WillOnce(Return(std::move(fut)));
// this "expected call" throws an error "use of deleted function std::future<_res>::future(const std::future<_Res>&)
// /usr/include/c++/7/future:782:7: note declared here
// future(const future&) = delete;
我想我收到了关于删除未来的复制构造函数的错误,所以我的问题是,我如何“模拟”未来对象,即如何在不复制的情况下“返回”未来,我做到了尝试使用“std::move”?我在这里错过了什么?
【问题讨论】:
标签: c++ unit-testing promise mocking future