Wie gibst du mit Google Mock einen Rückgabewert von unique_pointer in ON_CALL zurück?

Antwort

In Google Mock kannst du `ON_CALL` verwenden, um das Verhalten eines Mock-Objekts zu definieren, wenn eine bestimmte Methode aufgerufen wird. Wenn du eine Methode hast, die einen `std::unique_ptr` zurückgibt, kannst du dies wie folgt tun: Angenommen, hast eine Klasse `Class` mit einer Methode `GetPointer`, die einen `std::unique_ptr<int>` zurückgibt: ```cpp class MyClass { public: virtual std::unique_ptr<int> GetPointer() = 0; }; ``` Du kannst dann einen Mock für diese Klasse erstellen und `ON_CALL` verwenden, um das Verhalten zu definieren: ```cpp #include <gmock/gmock.h> #include <memory> class MockMyClass : public MyClass { public: MOCK_METHOD(std::unique_ptr<int>, GetPointer, (), (override)); }; TEST(MyTest, TestUniquePointerReturn) { MockMyClass mock; // Setze ON_CALL, um einen std::unique_ptr<int> zurückzugeben ON_CALL(mock, GetPointer()) .WillByDefault(testing::Return(std::make_unique<int>(42))); // Verwende den Mock auto ptr = mock.GetPointer(); ASSERT_EQ(*ptr, 42); } ``` In diesem Beispiel wird `ON_CALL` verwendet, um sicherzustellen, dass `GetPointer` einen `std::unique_ptr<int>` zurückgibt, der auf den Wert `42` zeigt.

Frage stellen und sofort Antwort erhalten