0

在创建记录时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

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

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

4

2 回答 2

1

我有同样的问题。最终使用 DatabaseTransactions 特征而不是 DatabaseMigrations。但这还不够,因为您仍然需要运行迁移并创建数据库表。您还可以通过覆盖主 TestCase 类的 setUp 方法来做到这一点:

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

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

然后,您可以在您的各个测试类上覆盖 setUp 函数,并在没有错误的情况下执行数据库操作。

于 2016-01-22T17:44:45.433 回答
0

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

$company = new \App\Company();
于 2015-12-23T11:58:44.837 回答