我正在尝试使用 cmocka 库在 c 中编写一个测试用例。我的测试用例正在测试一个函数,该函数然后在内部调用第 3 方库中的函数(无法修改库)。当应用程序未启动并运行时,此函数返回 NULL 值,所以我想模拟这个第 3 方库函数的返回值。我怎样才能做到这一点?
我曾尝试使用 cmocka 的 will_return 函数来获取所需的返回值,但它不起作用
void third_party_func()
{
return mock();
}
void my_func_to_be_tested()
{
int ret;
ret = third_party_func();
return ret;
}
void test_do_mytest(void ** state)
{
(void) state;
int ret;
will_return(third_party_func,1);
ret = my_func_to_be_tested();
assert_int_equal(1,ret);
}
const struct CMUnitTest tests[] = {
cmocka_unit_test(test_do_mytest),
};
int main(void)
{
return cmocka_run_group_tests(tests, NULL, NULL);
}
我得到了third_party_func()的多个定义的编译错误。如何处理这种情况?
我想获得所需的值作为我的第三方函数的返回值。