Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 25.02.2018 15:12:07

Тесты: сброс app без сброса базы

Пишу юнит-тесты, использую SQLite-in-memory и RefreshDatabase-трейт.
Перед началом теста на пустую базу накатываются миграции.

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

$this->refreshApplication();

Создался новый app, все сервисы пересоздались по новой, всё чистое.

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

$this->refreshDatabase();

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

Как решить?

Не в сети

#2 06.03.2018 18:46:14

Re: Тесты: сброс app без сброса базы

ты скорее всего упускаешь что-то где говоришь про "следующую загрузку страницы". то есть если ты используешь browser testing (aka dusk)
то тебе не нужно делать

$this->refreshApplication()

Но я так думаю ты не используешь dusk. а делаешь обычные тесты на http уровне. если так, тебе нужно сделать что-то вроде

// объялвешь какие-то начальные данные с которыми будешь работать
$someModel = SomeModel::create([]);

// делаешь запрос
$response = $this->post($url, $params);

$response->assertRedirect('some-url'); // этот тест удостверит тебя что приложение перешло на другую страницу

$someModel = $someModel->fresh();
// делаешь утверждение о том что данные в твоей модели поменялись так как считаешь нужным здесь
$this->assertEquals($someModel->value, $params['value']);

а чтоб не гадать, приложи код своего теста и расскажи что ты хочешь протестировать

я сегодня записал видео где работаю над приложением с использованием ТDD https://youtu.be/ZwtjfEtRL0s посмотри, многое должно проясниться big_smile


Пишу бэкенд для своего мобильного приложения, делюсь с миром, заходите посмотреть, много всего интересного https://youtu.be/C5M6-ycJ5gs

Не в сети

Подвал раздела