Могу ли я использовать cmocka для макета функции, которая возвращает структуру? - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть простая структура с двумя членами данных.

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

И у меня есть функция, которая возвращает структуру по значению.

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

Итак, как я могу издеваться get_my_struct() используя cmocka?

Я пытался

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

// or

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

, но я получаю ошибки компиляции.

Я прочитал документацию cmocka для фиктивных объектов , ноэто не дало мне четкого ответа.

1 Ответ

0 голосов
/ 26 апреля 2019

Вы можете разыменовать тип макетированного указателя,

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

, но вам нужно убедиться, что will_return () не является NULL.

...