Създавам API с Yii2 и имам някои API тестове за кодиране, работещи с тестова база данни. Въпреки това бих искал да изчистя и мигрирам базата данни при всеки кръг от тестване.
Как да направя това? Никъде не намирам отговор.
Създавам API с Yii2 и имам някои API тестове за кодиране, работещи с тестова база данни. Въпреки това бих искал да изчистя и мигрирам базата данни при всеки кръг от тестване.
Как да направя това? Никъде не намирам отговор.
Миграциите на Yii са проектирани да правят точно това, което искате. Има пълна документация за създаването им тук. Недостатъкът е, че имате нужда от достъп до командния ред. Ако нямате това, пак можете да използвате миграции, но трябва да създадете нов екземпляр на конзолно приложение. Вижте тук за дискусия точно на това проблем.
Що се отнася до риска от това действие на контролера да изчисти базата данни, съгласен съм, че може да е рисковано, но можете да ограничите действието само до администраторски потребители, като използвате правила, и може би дори да използвате формуляр, за да инициирате действието, за да можете да използвате csrf токени за валидирайте подаването и разрешавайте действието само чрез метода post. Ако имате нужда от насоки как да направите това, мога да актуализирам отговора си.
Независимо от тестването на API, връщането на съдържанието на базата данни до определено състояние със сигурност може да се направи с помощта на миграции, но не мисля, че това е най-доброто решение, което можете да имате, решението за това трябва да бъде използването на Fixtures em>.
Вижте повече информация относно фикстурите в официалната документация: 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