Я тестирую класс с фабрикой. Фабрика издевается с помощью гугл макета. Я использовал action и WillByDefault (), чтобы позволить фиктивной фабрике создавать примеры объектов и возвращать на них указатели. В тесте я прошу мой класс создать объект, используя фабрику с надписью и вернуть указатель на созданный объект. Я хочу убедиться, что указатель, возвращаемый из класса, совпадает с указателем, возвращаемым фиктивной фабрикой классу.
Допустим, у меня есть классная собака, собачья фабрика и питомник, который использует фабрику.
class dog;
class dogFactory{
dog* makeDog() { return new dog; }
}
ACTION(makeDogInMock){ return new dog; }
class factoryMock : public factory{
MOCK_METHOD1(makeDog, dog*());
}
class kennel{
public:
dog* dogInKennel;
dogFactory factory;
void putDogInKennel(){
this->dogInKennel = factory.makeDog();
}
dog* getDogInKennel(){
return this->dogInKennel;
}
}
Затем в конструкторе тестов я использую действие как операцию по умолчанию:
ON_CALL(factoryMock, dog(_)).WillByDefault(makeDogInMock)
В тесте я хочу знать, возвращает ли питомник тот же указатель, что и dogFactory
, возвращаемый при вызове в putDogInKennel()
, но я не знаю, как этого добиться.