2015-02-28 6 views
0

У меня есть набор функций в классе Singleton. Я хочу издеваться над функцией в классе singleton. Давайте возьмем следующий фрагмент кода. Функция setname() вернет строку из функции setname() класса classyyy. поэтому здесь я хочу проверить значение return.so, пожалуйста, скажите мне, как написать тестовый пример для этой ситуации.Я хочу написать тестовые примеры gmock google для приведенного ниже сценария

class mockBtMxxx : public BTMxxx 
{ 
public: 
    MOCK_METHOD2(setname, string(const int& id, const string& name)); 
}; 

// Test case for Setting Local Device Friendly Name. 
TEST(TestBTC, GMockSetNameTest) 
{ 
    mockBtMxxx mock_Btm; 
    int id = 12345; 
    string str = "Hello"; 
    EXPECT_CALL(mock_Btm, setname(_,_)).WillOnce(Return("Hello")); 
} 

Я получаю следующие ошибки: ошибки: 'BTMxxx :: BTMxxx()' является частный gmock-actions.h: 491: 66: ошибка: нет функции соответствия для вызова «ImplicitCast_ (сопзИте char * &) '

ответ

0

Для вашей первой ошибки вы должны сделать конструктор вашего базового класса вызываемым из производного класса. Пока вы не указали объявление class BTM, легко догадаться, что у вас есть конструктор, объявленный как private. Я предлагаю сделать BTMxxx::BTMxxx()protected, поэтому его можно вызывать конструктором по умолчанию класса mock.

Что касается вашей второй ошибки, то возвращаемый тип setname, вероятно, выводится как const char*. Вам необходимо предоставить объект std::string, чтобы он соответствовал точному типу возврата.

Чтобы получить более полное представление о вашей проблеме, предоставьте фактический код для класса BTMxxx и укажите, какую платформу и компилятор вы используете.