Member 12671760 Ответов: 0

Как я могу покрыть сервер сокетов PHP модульными тестами


Я создаю многопоточную полностью масштабируемую библиотеку PHP socket server, но чего я не знаю, так это как покрыть эту библиотеку модульными тестами.

Допустим, у нас есть класс Server с методами:
- > Создать
- > подключение
- > отключиться
- > старт
- > стоп
- > перезапуск

Метод create прост в тестировании, мы тестируем, был ли вызван метод и нет ли исключения.

Способ подключения содержит этот код
public function connect($socket){
    if(($acceptSocket = socket_accept($socket)) < 0){
          //exception
    }

   $this->sockets[] = $socket;
}


Проблема в том, что когда вы вызываете socket_accept, PHP застрянет здесь до тех пор, пока новое соединение не придет к этому сокету. Поэтому в этом случае я не могу проверить, был ли он принят, потому что модульный тест не будет продолжаться здесь, а просто остановится.

То же самое с методом run, где находится бесконечный цикл.

Как же тогда я должен делать тесты ?

Что я уже пробовал:

Я пытался найти ответ на этот вопрос, но мне не повезло найти его, workig one.

0 Ответов