Тест входа в систему с Laravel Dusk

Я начал тестирование браузера с laravel dusk. Использование тестовой базы данных (sqlite), создание пользователя с фабрикой моделей и использование метода Browser::loginAs сработали. Но когда я пытаюсь смоделировать реальный вход в систему, я получаю сообщение об ошибке:

General error: 1 no such table users.

У меня есть файл .env.dusk.local с указанием DB_CONNECTION=sqlite и DB_DATABASE=:memory:. Я также пробовал его с файлом sqlite. Затем я получил ошибку

Database (tests.sqlite) does not extis.

Я читал, что проблема может быть в сумерках и приложение открывает разные соединения. Как мне настроить подключения к базе данных, чтобы это работало?


person SPie    schedule 15.10.2017    source источник
comment
Правильно ли вы инициализировали свою базу данных и выполнили миграции?   -  person tadman    schedule 15.10.2017
comment
@tadman Я так думаю. Я могу создать пользователя с фабрикой моделей, а также использовать функцию loginAs. Кажется, что только вход через LoginController и свойство AuthentesUser не запускает миграции. Меня также смущает ошибка «База данных не существует», когда я использую файл sqlite.   -  person SPie    schedule 15.10.2017
comment
Когда он жалуется, что таблицы не существует, я склонен полагать, что ее не существует. Вам нужно будет убедиться, что он был создан правильно. Существуют настольные клиенты для открытия файлов .sqlite, так что вы можете заглянуть туда и посмотреть, что происходит.   -  person tadman    schedule 15.10.2017
comment
@tadman Похоже, что в сумерках запускается миграция, потому что я могу создавать и искать пользователей, входить в систему и выходить из нее. Но похоже, что само приложение использует другое соединение или что-то в этом роде и не выполняет миграцию. Итак, мой вопрос: как мне настроить соединения с базой данных и / или тестовую среду, чтобы сумерки и приложение использовали одну и ту же базу данных.   -  person SPie    schedule 16.10.2017


Ответы (1)


Проблема в том, что вы не можете использовать базу данных :memory: при запуске Laravel dusk. Потому что сервер сумерек и тестовый сервер работают в разных процессах. Dusk не может получить доступ к базе данных, созданной на сервере разработки.

См. Мой ответ здесь https://stackoverflow.com/a/50376781/7917269

person Sachintha    schedule 28.08.2019