Модульное тестирование с Laravel - PullRequest
0 голосов
/ 12 декабря 2018

Я использую PHP с фреймворком Laravel 5.5.Недавно я начал писать unitTests для своего кода и получил несколько вопросов:

  1. Каков наилучший способ взаимодействия с моей базой данных?Должен ли я использовать InMemoryDB, например, SQLite или Mock, все с помощью Mockery.

  2. Если у меня есть взаимодействие с БД, чем это все-таки UnitTesting или Integration Testing?

Спасибо за ответы в адвенсе

1 Ответ

0 голосов
/ 12 декабря 2018

Я работаю в компании, где мы стремимся к 80% охвату кода, в целом мы тестируем в основном End-2-End, с базой данных и поддельными внешними вызовами, мы используем SQLite, чтобы наш набор тестов мог быстро работать в локальной среде.Когда этот случай имеет смысл, мы проводим его модульное тестирование, например, налоговую службу, которую я оказал для разных стран, в которой я проводил модульное тестирование, потому что она основывалась на исходных данных.

Почему мы предпочитаем End-2-End:

  • Это быстрее, если вам не нужно производить юнит, интеграцию и тестирование от конца до конца
  • Вы проверяете, что конечная точка будет фактически использоваться
  • Я предпочитаюработать с реальной базой данных, если вы работаете с непрерывной интеграцией

Есть недостатки с SQLite, в основном он не работает как другая RDB, где есть много настроек и ограничений, поверх моей головыу меня были проблемы с применением внешнего ключа и т. д.

Итак, чтобы ответить на ваш вопрос:

  • Разумно использовать SQLite хотя бы локально
  • В модульном тестировании вы толькотестируя один класс и высмеивая все остальное, вы в основном проверяете, что код может выполняться.Обратите внимание, что это упрощенная версия на очень сложную тему.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...