假设我声明了一个名为 foo 的 C 结构,它有一个名为 bar 的 int 字段和一个名为 baz 的 char *。
我如何使用 Cmocka expect_
和 check_expected
宏来检查传递的结构是否正确并且两个字段都具有预期值?如果文档中有示例,我错过了。
[更新] 也许我可以用expect_check() ?但是我找不到例子:-(
最佳答案
使用expect_memory(...)
和check_expected(...)
:
示例:
我假设您有一个正在测试的函数 fut
,它调用一个子函数 subfunc
。你的结构看起来像这样:
typedef struct foo_s {
int bar;
int baz;
} foo;
您的试驾功能可能如下所示:
void test(void **state) {
foo myfoo = {
.bar = 42,
.baz = 13,
};
expect_memory(subfunc, param, &myfoo, sizeof(foo));
fut();
}
子函数看起来像这样:
void subfunc(foo *param){
check_expected(param);
}
关于Cmocka:检查作为参数传递的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39286206/