测试中的Artisan :: call()失败

时间:2013-05-29 21:08:06

标签: phpunit laravel laravel-4

我需要在运行测试之前清理数据库,否则我会收到有关重复信息的奇怪错误。

在我的PostTest.php文件中,我创建了一个设置方法

public function setUp()
{
    Artisan::call('migrate:refresh');
}

然后phpunit测试说:

PHP Fatal error:  Class 'Artisan' not found in C:\wamp\www\squigglemd\app\tests\PostTest.php on line 11

我也试过了:

\Artisan::call('migrate:refresh');

如何从测试中调用Artisan?

2 个答案:

答案 0 :(得分:9)

以下是当Artisan :: call不起作用时如何从测试功能调用artisan。

    public function setUp()
{
    parent::setUp();

    $app->make('artisan')->call('migrate:refresh');
    //Artisan::call('migrate:refresh'); // also works now too


}

答案 1 :(得分:2)

最好使用

public function setUp()
{   
    parent::setUp(); //this is reqired 

        Artisan::call('migrate:refresh');
}

这在文档中描述

  

注意:如果在测试类中定义自己的setUp方法,请务必调用parent :: setUp。

请参阅http://laravel.com/docs/5.1/testing#introduction