Макет функции 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, поэтому он не идеален, но успешно решает мою проблему.

Другие вопросы по тегам