我已为几款Laravel型号制作了一些单元测试。这些是需要按特定顺序存储的项目的Eloquent模型,因此,有一些方法可以在项目被删除时向上,向下移动项目并对碎片进行碎片整理。为此,我需要连接到测试数据库(我通过app / testing / database.php完成)并添加一些虚拟数据,然后才能测试方法。
这是我的 TestCase.php :
<?php
class TestCase extends Illuminate\Foundation\Testing\TestCase {
/**
* Creates the application.
*
* @return \Symfony\Component\HttpKernel\HttpKernelInterface
*/
public function createApplication()
{
$unitTesting = true;
$testEnvironment = 'testing';
return require __DIR__.'/../../bootstrap/start.php';
}
public function prepareDatabaseForTests()
{
Artisan::call('migrate');
Artisan::call('migrate:refresh');
Artisan::call('db:seed');
Mail::pretend(true);
}
}
然后,运行我的第一个单元测试正常( SectionTest.php ):
<?php
class SectionTest extends TestCase {
public function setUp()
{
$this->prepareDatabaseForTests();
}
//Tests adding a new section
public function testAddSection()
{
$this->assertTrue(true);
}
}
一旦我添加第二组测试,我就会收到错误
致命错误:未找到“Artisan”类 第26行/home/vagrant/Sites/mysite/app/tests/TestCase.php
以下是我的第二个测试文件( CourseTest.php )的示例:
<?php
class CourseTest extends TestCase {
public function setUp()
{
$this->prepareDatabaseForTests();
}
//Tests adding a new course
public function testAddCourse()
{
$this->assertTrue(true);
}
}
当我删除第二个测试文件( CourseTest.php )时,phpunit测试正常。我已经尝试运行composer update
以确保刷新自动加载但仍然没有运气。任何人都可以建议为什么会发生这种情况?
答案 0 :(得分:0)
您的迁移和重置订单无效。试试这个。
public function setUp()
{
Artisan::call('migrate');
Artisan::call('db:seed');
}
public function teardown()
{
Artisan::call('migrate:reset');
}
检查this示例。
注意:在进行单元测试时触摸数据库不是一个好习惯。我建议你在单元测试中使用模拟。