Я создаю API с Yii2, и у меня есть несколько тестов API кодирования, работающих с тестовой базой данных. Однако я хотел бы очистить и перенести базу данных в каждом раунде тестирования.
Как мне это сделать? Нигде не могу найти ответ.
Я создаю API с Yii2, и у меня есть несколько тестов API кодирования, работающих с тестовой базой данных. Однако я хотел бы очистить и перенести базу данных в каждом раунде тестирования.
Как мне это сделать? Нигде не могу найти ответ.
Миграции Yii предназначены для того, чтобы делать именно то, что вы хотите. Полная документация по их созданию есть здесь. Недостатком является то, что вам нужен доступ к командной строке. Если у вас его нет, вы все равно можете использовать миграции, но вам нужно создать новый экземпляр консольного приложения. См. здесь для обсуждения именно этого проблема.
Что касается риска сброса базы данных действием контроллера, я согласен, что это может быть рискованно, но вы можете ограничить действие только пользователями-администраторами, использующими правила, и, возможно, даже использовать форму для инициации действия, чтобы вы могли использовать токены csrf для подтвердите отправку и разрешите действие только через метод публикации. Если вам нужно какое-то руководство по этому поводу, я могу обновить свой ответ.
Независимо от тестирования API, вернуть содержимое базы данных в определенное состояние, безусловно, можно с помощью миграции, но я не думаю, что это лучшее решение, которое вы можете иметь, решением для этого должно быть использование Fixtures эм>.
См. дополнительную информацию о фикстурах в официальной документации: http://www.yiiframework.com/doc-2.0/guide-test-fixtures.html
После того, как вы реализовали фикстуры (должно быть довольно простым, в противном случае просто откройте другой пост), вы, вероятно, поймете, что миграция в любом случае может понадобиться для синхронизации структуры базы данных.
Эта задача может быть выполнена разработчиком вручную перед созданием любого теста или автоматически, если у вас есть сервер CI.
Опять же, миграции не нужно запускать каждый раз, когда вы запускаете тест, только в начале. Фикстуры — это то, что вам нужно, чтобы привести базу данных в определенный статус во время любого типа теста.
self contained
. Как мне этого добиться? Записи, добавленные в одном тесте, не удаляются в конце. Это мой тест API, который не очищает значения: gist.github.com/anonymous/fe05253bf0364cde349b а>
- person Dubby; 04.04.2015