我可以使用cmocka模拟返回结构的函数吗?

时间:2019-04-26 20:13:27

标签: c unit-testing cmocka

我有两个数据成员的简单结构。

typedef struct
{
    int32_t x;
    int32_t y;
} MyStructType;

我有一个按值返回结构的函数。

MyStructType get_my_struct(void)
{
    MyStructType test = { 1, 2 };
    return test;
}

那么,如何使用cmocka模拟get_my_struct()

我尝试过

MyStructType get_my_struct(void)
{
    return mock_type(MyStructType);
}

// or

MyStructType get_my_struct(void)
{
    return mock_ptr_type(MyStructType*);
}

但是出现编译错误。

我读了the cmocka documentation for mock objects,但没有给我明确的答案。

1 个答案:

答案 0 :(得分:0)

您可以取消引用模拟指针类型,

MyStruct get_my_struct(void)
{
    return *mock_ptr_type(MyStructType*);
}

但是您需要确保will_return()不是NULL