我正在使用Laravel开发Web应用程序。我想单元测试一些逻辑。所以我创建了一个单元测试类,如下所示。
class AcceptationTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testCountUpWhenDifferenceIsOverOneWeek()
{
$acceptationRepo = new AcceptationRepo;
//must count up on 5/12/2017
$need_count_up = $acceptationRepo->shouldCountUpTwoDWeek("11-28-2017");
$this->assertTrue($need_count_up);
}
}
我从终端运行单元测试,它正在运行。然后我添加了另一个测试功能。所以我的测试类看起来像这样。
class AcceptationTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testCountUpWhenDifferenceIsOverOneWeek()
{
$acceptationRepo = new AcceptationRepo;
//must count up on 5/12/2017
$need_count_up = $acceptationRepo->shouldCountUpTwoDWeek("11-28-2017");
$this->assertTrue($need_count_up);
}
public function testNotCountUpIfDifferenceIsExactlySeven(){
$acceptationRepo = new AcceptationRepo;
//must count up on 5/12/2017
$need_count_up = $acceptationRepo->shouldCountUpTwoDWeek("11-29-2017");
$this->assertTrue(!$need_count_up);
}
}
当我从终端运行测试时,它显示此错误。
我仔细检查了我的第二个功能,没有错误。确保我删除了第一个函数并单独运行第二个函数。所以我的测试类看起来像这样。
class AcceptationTest extends TestCase
{
public function testNotCountUpIfDifferenceIsExactlySeven(){
$acceptationRepo = new AcceptationRepo;
//must count up on 5/12/2017
$need_count_up = $acceptationRepo->shouldCountUpTwoDWeek("11-29-2017");
$this->assertTrue(!$need_count_up);
}
}
正如您所看到的,测试类中只有一个函数,即新添加的函数。我再次从终端运行测试,现在它正在工作而不会抛出任何错误。我发现问题是添加了多个功能。但我需要这样做。我从终端读取了错误消息,它根本没有处理单元测试。
我尝试添加这两个属性
protected $preserveGlobalState = FALSE;
protected $runTestInSeparateProcess = TRUE;
当我跑步时,它给了我这个错误
答案 0 :(得分:0)
一种选择是从代码中删除常量。您应该能够在使用常量的大多数地方引用env
变量或config
变量。
其他选项是使用这些标志来确保每个测试都有自己的过程:
class AcceptationTest extends TestCase
{
protected $preserveGlobalState = FALSE;
protected $runTestInSeparateProcess = TRUE;
最后,您可以在您定义常量
的位置添加测试if (!defined('SITE_NAME')) define('SITE_NAME', 'foobar');