我正在使用Google Test,并尝试模拟返回未来对象的方法。我在测试用例中创建了一些未来对象,然后执行 "when(mock.Call()).thenReturn(myFutureObject)",但是出现了错误:"use of deleted function 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;
我猜想我遇到了有关future的复制构造函数被删除的错误,那么我的问题是,如何“模拟”一个future对象,即如何“返回”一个未拷贝的future,并且我尝试使用“std::move”?我在这里漏掉了什么吗?