Я хочу добавить служебную функцию в свой класс тестовых приспособлений, которая будет возвращать макет с определенным набором ожиданий/действий.
E.g.:
class MockListener: public Listener
{
// Google mock method.
};
class MyTest: public testing::Test
{
public:
MockListener getSpecialListener()
{
MockListener special;
EXPECT_CALL(special, /** Some special behaviour e.g. WillRepeatedly(Invoke( */ );
return special;
}
};
TEST_F(MyTest, MyTestUsingSpecialListener)
{
MockListener special = getSpecialListener();
// Do something with special.
}
К сожалению, я получаю:
error: use of deleted function ‘MockListener ::MockListener (MockListener &&)’
Итак, я предполагаю, что макеты не могут быть скопированы? Почему, и если да, то есть ли другой элегантный способ получить функцию для создания готового макета с уже установленными ожиданиями/действиями?
Очевидно, я могу заставить getSpecialListener возвращать MockListener&, но тогда ему не нужно быть членом MyTest, и поскольку только некоторые тесты используют этот конкретный макет (и я должен заполнять поведение макета только в том случае, если тест его использует) было бы менее чисто.
std::unique_ptr
... - person PiotrNycz   schedule 09.10.2015