在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 :(得分:1)
我遇到了同样的问题。使用DatabaseTransactions特性而不是DatabaseMigrations结束。但这还不够,因为您仍需要运行迁移并创建数据库表。您可以通过覆盖主TestCase类上的setUp方法来执行此操作:
public function setUp()
{
parent::setUp();
$this->artisan('migrate:refresh');
}
这样,您可以在每次测试之前回滚并重建所有表。并且您的测试包含在事务中,这些事务也会回滚。
然后,您可以覆盖各个测试类的setUp函数,并且可以无错误地执行数据库操作。
答案 1 :(得分:0)
尝试添加\
befor App
,如下所示:
$company = new \App\Company();