Макет функции C при модульном тестировании с единицей
У меня есть проект C с 2 модулями - A и B. B имеет функцию, которая вызывает функцию из A.
int B_func() {
if (1 == A_func()) {return 1;}
return 2;
}
Я использую единство, чтобы проверить эти модули.
TEST(B, test_b) {
TEST_ASSERT_EQUAL(1, B_func())
}
Когда я тестирую модуль B, я хочу смоделировать A_func, чтобы он использовал мою реализацию и изменил возвращаемое значение. Есть ли способ сделать это без изменения исходного кода модуля B?
1 ответ
Решение
Я закончил тем, что использовал Mimick. https://github.com/diacritic/Mimick
Это немного громоздко. Мне нужно было скомпилировать свой проект как общий объект и связать его с моими тестами, чтобы мои функции были в GOT, поэтому он не идеален, но успешно решает мою проблему.