我应该检查模拟函数中的输入变量(指针)吗?
Should I check the input variables (pointers) in a mock function?
我正在使用 CMocka
在 C 中编写一系列模拟函数
其中一些将指针作为输入变量,我不确定是否应该检查它们 (ptr != NULL
)。
一般来说,模拟函数是否负责执行输入检查?
如果是,当发现错误时应该如何表现?
是否应该使用框架提供的assert函数?
如果您提到的指针是传递给某些模拟函数的参数,您可以使用 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/
是否真的需要检查它们取决于您和您的代码以及您的意见和要求。
我正在使用 CMocka
在 C 中编写一系列模拟函数其中一些将指针作为输入变量,我不确定是否应该检查它们 (ptr != NULL
)。
一般来说,模拟函数是否负责执行输入检查?
如果是,当发现错误时应该如何表现? 是否应该使用框架提供的assert函数?
如果您提到的指针是传递给某些模拟函数的参数,您可以使用 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/
是否真的需要检查它们取决于您和您的代码以及您的意见和要求。