Я тестирую функцию адаптера с помощью gtest и не могу успешно использовать SetArgPointee в моем тесте.
class Adapter:{
public:
int getTaskStateAdapter(){
//do something
int task_state = -1;
int exit_value = -1;
result = getTaskState(&task_state, &exit_value);
if(result != 0){
//throws here
}
if(exit_value != 0){
//throws here
}
return task_state;
}
}
Я проверяю, будет ли функция адаптера генерировать исключение, если значение_входа не равно 0.
TEST(class_name, test_name){
EXPECT_CALL(ClassMock::instance(), getTaskState(_,_)).WillOnce(DoAll(SetArgPointee<1>(-1), Return(0)));//Mock class is included in the test file
EXPECT_THROW(Adapter::getTaskAdapter(), ERxEXC::Exception);//ERxEXC::Exception is a self-defined exception
}
Однако, какое бы значение я ни установил в SetArgPointee для exit_value, исключение никогда не генерировалось.