【发布时间】:2018-02-13 12:06:58
【问题描述】:
我正在 laravel 中开始测试
我用这个创建了一个“.env.testing”文件
APP_NAME=myApp
APP_ENV=testing
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://myApp.localhost
DB_CONNECTION=sqlite_testing
我在 config/database.php 文件的“连接”部分添加了这个
...
'sqlite_testing' => [
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
],
...
在 phpunit.xml 文件中,我添加了:
<env name="DB_CONNECTION" value="sqlite_testing" />
我创建了一个 UserTest 功能:
class UserTest extends TestCase
{
public function setUp()
{
parent::setUp();
Artisan::call('migrate');
Artisan::call('db:seed');
}
public function tearDown()
{
parent::tearDown();
Artisan::call('migrate:reset');
}
public function testCanAccessUserSpace()
{
$user = factory(User::class)->create();
$response = $this->actingAs($user)
->get('/home');
$response->assertStatus(200);
}
}
但是当我运行测试时,我有这个:
ReflectionException: Class env does not exist
我的配置有什么问题?
谢谢
【问题讨论】:
-
我们需要一个堆栈跟踪来找出哪里出了问题。我最初猜想您应该在完成自己的工作后调用
parent::tearDown(),以便在您尝试 Artisan 调用时父级不会破坏任何应用程序实例。 -
非常感谢!正如你所说,
parent::tearDown();必须在Artisan::call('migrate:reset');之后调用
标签: laravel testing integration-testing