Я работаю над огромным проектом. У нас около 200 таблиц базы данных, соответственно огромное количество моделей, действий и так далее.

Как мне начать писать для этого тесты?

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

Я хочу проводить модульные тесты, потому что у меня были проблемы с ошибками в моем коде из-за рефакторинга функций, но я даже не знаю, с чего начать. Примеры из документации охватывают только очень небольшую функцию. Как это выглядит, когда файл действия содержит более 700 строк кода?

3
MaikL80 14 Ноя 2009 в 02:50

2 ответа

Лучший ответ

Отличный вопрос .. Я лично сталкивался с этим повсюду.

Вот что я нашел на данный момент:

1) Получите базу данных разработчиков .. НЕ тестируйте на базе данных продуктов!

2) Как бы банально это ни звучало, но начните с малого и простого.

3) Я не знаю, что у вас за поле (база данных электронной коммерции, база данных контактов и т. Д.), Но скажу, что это база данных электронной коммерции. Начните с тестирования, создав несколько моделей заказов и сохраните их. Возможно, воссоздайте реальный порядок в тестовой обвязке, чтобы он сохранялся в БД. Теперь вы можете быстро создать 1000 заказов для проведения тестов .. НАМНОГО быстрее, чем вручную делать покупки в Интернете. Для получения максимальной выгоды создайте модель того, над чем вы сейчас работаете, чтобы вы могли использовать ее во время тестирования.

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

5) Нужно протестировать контроллеры? Круто, теперь у вас есть модель, с которой вы не беспокоитесь, потому что она ненастоящая ... Нужны какие-то вариации? Создавайте больше наборов тестов, которые строят разные модели в соответствии с вашими потребностями. Модели могут быть сложными, но вы должны уметь писать некоторые тестовые функции, которые создают вариации ваших различных моделей. Затем запустите свои контроллеры против этих ...

6) Продолжайте копаться в покрытии кода.

ПРЕДУПРЕЖДЕНИЕ: будьте осторожны и будьте единственным, кто запускает модульные тесты. Вы быстро станете наиболее эффективным решателем проблем, но тогда люди будут пытаться заставить ВАС все исправить ...

2
Zak 14 Ноя 2009 в 03:30

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

Когда вы начинаете тестировать проект, большой или маленький, в центре внимания должно быть покрытие кода. Не беспокойтесь сначала о крайних случаях (если этого не требует ситуация). Когда я начинаю тестировать проект, мне нравится начинать с моделей, поскольку они самые простые. Оттуда перейдите к тестированию контроллеров и посмотрите, как это пойдет.

0
Mike B 14 Ноя 2009 в 03:07