Как заглушить сокет в C?

Я написал клиентский код, который должен отправлять некоторые данные через сокет и считывать ответ с удаленного сервера.

Я хотел бы протестировать этот код. Сигнатура функции выглядит примерно так:

double call_remote(double[] args, int fd);

где fd - файловый дескриптор сокета на удаленном сервере.

Теперь функция call_remote будет после отправки данные, блокируемые при чтении ответа с сервера. Как я могу заглушить такой удаленный сервер для модульного тестирования кода?

В идеале я бы хотел что-то вроде:

int main() {
  int stub = /* initialize stub */
  double expected = 42.0;

  assert(expected == call_remote(/* args */, stub);

  return 0;
}

double stub_behavior(double[] args) {
  return 42.0;
}

Я бы хотел, чтобы stub_behavior был вызван и отправил 42.0 ] в зарезервированном файловом дескрипторе.

Я могу сделать это простым способом?

9
задан Mark Lakata 26 September 2016 в 21:19
поделиться