我正在使用Laravel 5.1,我有以下测试类,我在setUp()
方法中使用一些模型工厂来暂时为数据库设定种子。
class PendingUserWithManualStudentDetailsTest extends TestCase
{
use DatabaseMigrations, WithoutMiddleware;
public function setUp()
{
parent::setUp();
$this->studentDetail = factory(StudentDetail::class)->create();
// ... more factories
}
// ... some tests
}
运行测试时出现以下错误:
General error: 1 no such table: student_details
当我将工厂调用移动到测试方法时,它们执行得很好。所以我猜测调用setUp()
和我的测试方法的顺序导致了这个问题。有什么方法可以解决这个问题吗?
这是我的测试用例类:
class TestCase extends Illuminate\Foundation\Testing\TestCase
{
/**
* The base URL to use while testing the application.
*
* @var string
*/
protected $baseUrl = 'http://myapp.dev';
/**
* Creates the application.
*
* @return \Illuminate\Foundation\Application
*/
public function createApplication()
{
$app = require __DIR__.'/../bootstrap/app.php';
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
$app->setLocale('en');
return $app;
}
}