Должен ли я проверить входные переменные (указатели) в фиктивной функции?
Я пишу серию фиктивных функций в C, используя CMocka
Некоторые из них принимают указатели в качестве входных переменных, и я не уверен, стоит ли их проверять (ptr != NULL
) или нет.
В целом, отвечает ли фиктивная функция за проверку ввода?
Если да, как он должен вести себя при обнаружении ошибки? Должен ли он использовать функции assert, предоставляемые фреймворком?
1 ответ
Решение
Если упомянутые вами указатели являются параметрами, которые передаются некоторым поддельным функциям, вы можете проверить их с помощью check_expected(...)
а также expect_value()
,
void function_under_test(){
char c = 'c';
int ret;
//...
ret = subfunction(&c);
if(ret == 0)
printf("Success");
//...
}
int __wrap_mocked_subfunction(int* p_paramater){
check_expected(p_paramater);
return mock();
}
test(void **state){
expect_not_value(__wrap_mocked_functions, p_paramater, NULL);
will_return(0);
function_under_test();
}
Ошибки сообщаются автоматически.
Пример можно найти здесь: https://lwn.net/Articles/558106/
Если вам действительно нужно их проверить, зависит от вас, вашего кода, вашего мнения и ваших требований.