首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cmocka模拟函数

使用cmocka模拟函数
EN

Stack Overflow用户
提问于 2021-07-02 16:15:01
回答 1查看 147关注 0票数 0

我正在尝试使用cmocka模拟一些函数:

代码语言:javascript
复制
void test_led_driver_NeedToImplement(void **state)
{
       
    state_t current = CLEAR;
    will_return(led_status_toggel,SET);
    
    TEST_ASSERT_EQUAL(SET, led_status_toggel(current));
}

但是,我得到一个错误: led_status_toggel()有剩余的非返回值。我必须为我的函数创建一个模拟文件吗?或者这个错误的来源是什么?Ps:我使用unity.h作为断言库。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-02 18:43:19

根据您的测试,看起来您正在测试的函数是led_status_toggel。如果是这样的话,你就不应该嘲笑它。你应该删除will_return(led_status_toggel,SET);,因为你的led_status_toggel可能是这样的(你不会分享它,所以我不确切知道):

代码语言:javascript
复制
state_t led_status_toggel(state_t state)
{
    if (state == CLEAR)
    {
        return SET;
    }       
    return CLEAR;
}

如果您测试的函数不是led_status_toggel,而是调用此led_status_toggel的其他函数(您没有提到),那么您可以像这样模拟此函数

代码语言:javascript
复制
state_t __wrap_led_status_toggel(state_t state)
{
    return (state_t)mock();
}

并在构建命令中使用-Wl,--wrap=led_status_toggel。使用--wrap链接器标志,当您执行测试时,将调用模拟函数__wrap_led_status_toggel,而不是原始的led_status_toggel

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68221813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档