2016-09-21 1 views
0

Я знаю, что вы можете протестировать свои модели, указав временную тестовую базу данных на . Это то, что нужно всегда использовать при тестировании модели? Или тестирование функциональности только класса без сохранения что-нибудь в базе данных в порядке?Единицы тестирования объектов в symfony, когда использовать тест db?

ответ

1

Это действительно слишком общее утверждение, если ваша модель содержит логику манипулирования данными, тогда нет необходимости протестировать реальный db. Логику можно проверить путем настройки поддельных данных, вызова метода манипуляции и проверки вывода. Тем не менее, ваша модель должна быть спроектирована таким образом, который поддерживает это. Если метод модели отвечает за извлечение данных из базы данных, манипулирование данными, а затем сохраняя данные, их необходимо реорганизовать, чтобы изолировать эти 3 отдельных операции.

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

enter image description here

Mike Cohn's test pyramid визуально описывает эту концепцию. Большая часть автоматизированной проверки должна выполняться на самом низком уровне. Тестирование интеграции (ваше приложение для mysql) необходимо, но должно охватывать только фактическую интеграцию, а не чрезмерно выполнять прикладную логику. Это связано с тем, что интеграционные тесты сложнее поддерживать и медленнее, потому что они используют внешние ресурсы. Если вы тестируете общую среду (jenkins), часто возникают проблемы с управлением ресурсами.