Как я могу покрыть сервер сокетов 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.