мы строим API с помощью Laravel, и мы сталкиваемся с существенным вопросом:API модульного тестирования (Test Endpoints против Test Everything)
Должны ли мы проверить все (каждый метод в каждой модели, контроллер и любой другой класс)? или просто проверить конечные точки API, так как тестирование конечных точек означает, что все остальное будет проверено, потому что конечная точка API использует метод контроллера, который, в свою очередь, использует метод модели!
Фактически я склоняюсь к более позднему, который тестирует конечные точки, поможет вам проверить все остальное, но я должен быть уверен, что это правильная вещь.
Edit:
Рассмотрим следующие два момента:
- тестирования конечных точек означает, что я должен послать запрос HTTP и ждать ответа, чтобы увидеть, если это то, что мне нужно, и это может быть очень плохо для этого метода.
- тестирование все означает, что я должен найти способ подделать запрос laravel и его заголовки, и это может быть очень плохо для этого метода.
Любые советы и комментарии будут оценены.
, так что вы думаете, что лучше построить оба теста? если да, то как следует тестировать модели в laravel, если они зависят от заголовков запросов, например? –
Все зависит от вашего текущего контекста: проекта, дисциплины/зрелости ваших коллег-разработчиков и т. Д. Если вы спросите меня прямо сейчас, я бы определенно протестировал все на уровне единицы и провел очень мало сквозных тестов чтобы убедиться, что система действительно правильно подключена. Это хорошо сочетается с концепцией [тестовой пирамиды Кона] (http://martinfowler.com/bliki/TestPyramid.html). Факт остается фактом: более высокий уровень ваших тестов, тем более дорогостоящим они становятся для поддержания. – prgmtc
спасибо @prgmtc, вы тоже открыли глаза на что-то другое, возможно, я не могу написать модульный тест, потому что единицы не удовлетворяют принципу единоличной ответственности, я буду принимать ваш ответ: D –