К сожалению, вы не можете смоделировать функции в C с помощью CUnit.
Но вы можете реализовать свои собственные фиктивные функции, используя и злоупотребляя определениями:
Предполагая, что вы определяете UNITTEST при компиляции для тестов, вы можете в проверяемом файле (или во включении) определить что-то вроде этого:
#ifdef UNITTEST
#define bind mock_bind
#endif
В файле mock_helper.c, который вы скомпилируете в тестовом режиме:
static int mock_bind_return; // maybe a more complete struct would be usefull here
static int mock_bind_sockfd;
int mock_bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
{
CU_ASSERT_EQUAL(sockfd, mock_bind_sockfd);
return mock_bind_return;
}
Затем в вашем тестовом файле:
extern int mock_bind_return;
extern int mock_bind_sockfd;
void test_function_with_bind(void)
{
mock_bind_return = 0;
mock_bind_sockfd = 5;
function_using_bind(mock_bind_sockfd);
}