Я использую Laravel и Codeception для приемочного тестирования. Большинство моих тестов требуют, чтобы пользователи вошли в систему, поэтому я хотел извлечь эти поведения в файл _bootstrap.php внутри папки принятия. Насколько я понимаю, это практика запуска установки перед тестами в Codeception.
Я могу подтвердить, что моя таблица пользователей существует (я просматриваю ее с помощью Navicat) и что существует пользователь с идентификатором 1. Codeception, насколько мне известно, правильно настроен для использования этой базы данных. Я также включил модули Laravel4 и Db для пакета принятия. Я получаю следующую ошибку, когда пытаюсь запустить свой пакет приемки или любую отдельную приемку Cept.
консоль:
[Illuminate\Database\QueryException]
SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "users" does not exist
LINE 1: select * from "users" where "id" = $1 limit 1
^ (SQL: select * from "users" where "id" = 1 limit 1)
Я получаю эту ошибку независимо от содержимого любого из приемов. Даже простое $I->amOnPage('/')
или $I->comment('test')
по-прежнему приводит к ошибке. Я считаю, что ошибка возникает, как только она встречает команду в файле _bootstrap.php. Каким-то образом он может получить доступ к моей базе данных. Я должен отметить, что я также пробовал различные комбинации включения и отключения параметров заполнения и очистки для модулей Laravel4 и Db, но безрезультатно.
Вот мой файл acceptance/_bootstrap.php:
<?php
Auth::loginUsingId(1);
codeception.yml:
actor: Tester
paths:
tests: tests
log: tests/_output
data: tests/_data
helpers: tests/_support
settings:
bootstrap: _bootstrap.php
colors: true
memory_limit: 1024M
modules:
config:
Db:
dsn: 'pgsql:host=localhost;dbname=myapp'
user: 'someuser'
password: 'somepass'
dump: tests/_data/dump.sql
acceptance.suite.yml:
class_name: AcceptanceTester
modules:
enabled:
- AcceptanceHelper
- Laravel4
- PhpBrowser
- Db
config:
PhpBrowser:
url: 'http://localhost'
Laravel4:
cleanup: false
Db:
populate: true
cleanup: false