我刚开始使用 Cmocka,我已经在这个问题上停留了一段时间。我有一个正在尝试构建的 cmocka 项目。当我尝试使用“make”时,我看到了错误。
[ 错误 ] --- 没有符号 __wrap_i2c_read 的条目。
此外,我在调用的行的 mock_i2c.c 文件中看到错误mock()
无法获得模拟函数 __wrap_i2c_read 的值。
现在我只是想模拟一个真/假值来让它工作。所以我的模拟看起来像
bool __wrap_i2c_read(void)
{
return (mock());
}
我在我的测试中检查了我正在打电话will_return(__wrap_i2c_read, true);
在我的 Makefile 中,LDFLAGS += -Wl,--wrap=i2c_read
我已经cmocka.h
包含在 mock_i2c.c 文件中。
对于这个模拟函数,这似乎不是一个问题,因为如果我不使用它,我会在该文件中的其他模拟函数中得到相同的错误。我不确定还需要什么其他信息,请告诉我。有人知道这是什么意思/以前见过吗?
谢谢。
编辑:所以我想我已经弄清楚为什么会出现这个错误。我正在测试的函数中有一个for
循环。从这个函数调用模拟函数。一旦我删除循环,错误就会消失。这可能与will_return
模拟值如何/何时排队有关吗?for
循环阻碍了?
Edit2:好的,看来我只是没有排队足够的模拟值。