Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何模拟类型为std::unique\u ptr的返回值_C++_Unit Testing_Smart Pointers_Googletest_Googlemock - Fatal编程技术网

C++ 如何模拟类型为std::unique\u ptr的返回值

C++ 如何模拟类型为std::unique\u ptr的返回值,c++,unit-testing,smart-pointers,googletest,googlemock,C++,Unit Testing,Smart Pointers,Googletest,Googlemock,我有一个模拟方法: MOCK_METHOD1(start, std::unique_ptr<SomeStruct>(const std::string& name)); 我还想对SomeStructMock对象设置一些期望。我试图给出一个返回值 要启动mock方法,请执行以下操作: Return(ByMove(std::make_unique<SomeStructMock>()) Return(ByMove(std::make_unique()) 但它看起来

我有一个模拟方法:

MOCK_METHOD1(start, std::unique_ptr<SomeStruct>(const std::string& name));
我还想对SomeStructMock对象设置一些期望。我试图给出一个返回值 要启动mock方法,请执行以下操作:

Return(ByMove(std::make_unique<SomeStructMock>())
Return(ByMove(std::make_unique())
但它看起来像
返回指针仍然指向一个真正的SomeStruct,而不是SomeStructMock对象,有什么问题吗?

如果我这样做:builderP=std::make_unique();给模拟方法返回值如下:return(ByMove(builderP)),得到这个错误:使用删除的函数'std::unique_ptr::unique_ptr(const std::unique_ptr&'),请提供“看起来返回指针仍然指向一个真正的SomeStruct,而不是SomeStructMock对象”…如果您也返回一个原始指针,您可能会遇到完全相同的问题。请阅读。例如:,我只是将virtual UserBuilder getUserBuilder(const std::string&functionName)const;更改为virtual std::unique\u ptr getUserBuilder(const std::字符串和函数名)const
Return(ByMove(std::make_unique<SomeStructMock>())