2015-12-23 9 views
0

При создании записи в setUp():Ошибка: базовая таблица или представление не найдены при создании записей на Laravel Test SetUp()?

public function setUp(){ 
    parent::setUp(); 

    $company = new App\Company(); 
    $company->company_name = 'MyTest'; 
    $company->save(); 
} 

Я получаю следующее сообщение об ошибке:

Base table or view not found

Я использую use DatabaseMigrations; в моем TestCase. Может быть, миграции выполняются непосредственно перед запуском testCase, поэтому, когда запущено `setUpz, еще не создана таблица.

Использование Laravel 5.1

В настоящее время я должен повторяться, создавая эту запись в каждом тесте.

Любые идеи, как сделать эту работу?

+0

Какую версию Laravel вы используете? Работает ли модель в контексте, отличном от теста? –

+0

Я обновил вопрос (версия 5.1), да, он работает во всех сценариях, включая тесты тестов, но не в функции 'setUp()' – surfer190

ответ

0

Попробуйте добавить \ Befor App, как это:

$company = new \App\Company(); 
0

У меня была такая же проблема. Закончено с использованием свойства DatabaseTransactions вместо DatabaseMigrations. Однако этого недостаточно, поскольку вам все равно нужно запускать свои миграции и создавать таблицы db. Вы можете сделать это, также перекрывая метод установки на главном классе TestCase:

public function setUp() 
{ 
    parent::setUp(); 
    $this->artisan('migrate:refresh'); 
} 

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

Затем вы можете переопределить функцию setUp на своих индивидуальных тестовых классах и делать вещи без ошибок.

 Смежные вопросы

  • Нет связанных вопросов^_^