错误:在Laravel Test SetUp()上创建记录时找不到基表或视图?

时间:2015-12-23 09:53:17

标签: php laravel laravel-5.1 laravel-testing

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

目前,我必须通过在每次测试中创建此记录来重复自己。

任何想法如何使这项工作?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。使用DatabaseTransactions特性而不是DatabaseMigrations结束。但这还不够,因为您仍需要运行迁移并创建数据库表。您可以通过覆盖主TestCase类上的setUp方法来执行此操作:

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

这样,您可以在每次测试之前回滚并重建所有表。并且您的测试包含在事务中,这些事务也会回滚。

然后,您可以覆盖各个测试类的setUp函数,并且可以无错误地执行数据库操作。

答案 1 :(得分:0)

尝试添加\ befor App,如下所示:

$company = new \App\Company();