简体   繁体   English

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

[英]Can I use cmocka to mock a function that returns a struct?

I have a simple structure with two data members. 我有一个简单的结构,有两个数据成员。

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

And I have a function that returns the struct by value. 我有一个函数,通过值返回结构。

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

So, how can I mock get_my_struct() using cmocka? 那么,我如何使用cmocka模拟get_my_struct()

I tried 我试过了

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

// or

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

but I get compile errors. 但我得到编译错误。

I read the cmocka documentation for mock objects , but it didn't give me a clear answer. 我阅读了模拟对象的cmocka文档 ,但它没有给我一个明确的答案。

You can dereference a mocked pointer type, 您可以取消引用模拟的指针类型,

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

but you need to make sure will_return() is not NULL . 但是你需要确保will_return()不是NULL

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM