Я заметил, что когда мой ноутбук подключен к Интернету, мои тесты PHPUnit занимают от ~ 90 секунд до 200 секунд. Но когда я отключу его от Интернета, он работает менее чем за 20 секунд! что делает меня счастливым и грустным в одно и то же время!Почему тесты PHPUnit работают быстрее, когда машина отключена от Интернета?
В обоих случаях все тесты проходят, я уверен, что я издеваюсь над каждым запросом внешних API.
Я использую Laravel и MySQL для реального хранения данных и sqlite в памяти для среды тестирования. Также моя среда разработки работает на Docker.
Это что-то связано с PHPUnit или с моим кодом !! у любого есть идея о том, что происходит. Благодаря
Подробнее
домен я использую something.dev
и использование моего API, api.something.dev
. Каждый тест делает по крайней мере один вызов для каждой конечной точки API.
DNS! Если вы считаете, что это связано с поиском DNS: я полностью изменил весь домен и поддомены на 127.0.0.1, чтобы проверить его, и это не помогло испытаниям все еще медленно. Если это устранит возможность поиска DNS!
Кроме того, я пытался издеваться над DNS, используя The PHPUnit Bridge с PHPUnit, но я думаю, что я не смог заставить его работать из-за отсутствия документации, поэтому я не знал, что передать в качестве параметра DnsMock::withMockedHosts([here!!])
после вызова его из моего setUp()
функция.
Что-то еще Я думаю, что проблема связана с хранением данных, поскольку задержка происходит до и после того, как запрос к базе данных, в основном, для хранения данных.
Попробуйте запустить отладку с помощью https://github.com/johnkary/phpunit-speedtrap, чтобы узнать, какие именно модульные тесты работают намного медленнее. Возможно, это показывает что-то неожиданное, если ваш набор тестов действительно большой. – Iskar
@ Iskar, зная, какие тесты медленны, когда интернет встает, не помогает, я тщательно контролировал выполнение некоторых тестов, и время настолько случайное и не имеет никакого смысла. Особенно, когда я запускаю те же тесты в автономном режиме, ничего не занимает больше 0. **** сек. –
Кажется, что ваши тесты кода или блока делают сетевые запросы (независимо от того, являются ли они поисковыми системами DNS или чем-то еще). Когда вы не подключены, запрос быстро завершается (не дожидается ответа) и продолжается с остальной частью кода. Эти сетевые запросы не подрывают тесты, поэтому их может быть сложно найти, но это то, что вам нужно выяснить. Вы можете посмотреть сетевой трафик, чтобы узнать, что именно отправляется, когда вы подключены к Интернету. – swbandit