2016-04-25 83 views
2

为什么“测试1”中的单元测试会返回状态代码500而不是200?有人可以解释我吗? 下面是2个测试中的相同动作的例子,它们返回不同的状态码。两次测试中我预计200次?Laravel 5 - 单元测试 - 状态代码500,预计200

LanguageController

class LanguageController extends Controller implements IEntityViewManager 
    { 
      public function showAllView() 
      { 
       $allLanguages = $this->languageRepo->orderBy('id'); 

       return view('admin.languages.showAll')->with('languages', $allLanguages); 
      } 
    } 

LanguageControllerTest

class LanguageControllerTest extends TestCase 
{ 

    public function __construct($name = NULL, array $data = array(), $dataName = '') 
    { 
     parent::__construct($name, $data, $dataName); 
    } 

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

    public function tearDown() 
    { 
     Mockery::close(); 
    } 

    protected function setUpMock() 
    { 
     $mock = Mockery::mock(LanguageRepositoryInterface::class); 
     $this->app->instance(LanguageRepositoryInterface::class, $mock); 

     return $mock; 
    } 

    // test 1 
    public function testShowAllLanguages() 
    { 
     $mock = $this->setUpMock(); 

     $mock->shouldReceive('orderBy')->once()->andReturn([1]); 

     $result = $this->action('GET', 'Entities\[email protected]'); 

     var_dump("Test 1 : " . $result->getStatusCode()); // RETURNS 500 
    } 

    // test 2 
    public function testShowAllView() 
    { 
     $result = $this->action('GET', 'Entities\[email protected]'); 

     var_dump("Test 2 : " . $result->getStatusCode()); // RETURNS 200 

     $this->assertViewHas('languages'); 

     $this->assertResponseOk(); 
    } 
} 

响应在CMD:

enter image description here

+2

您是否尝试过查看Laravel错误日志文件? – Jono20201

+0

查看日志文件将是非常有用的,但我想你不是在正确地模拟languageRepo –

+0

在app/exceptions/Handler中为'$ dontReport'(不应报告的异常类型列表)设置一个空数组。 php'可以帮助排除测试中的错误,因为它们可以用这种方式在日志中查看。 – apex39

回答

1

我检查laravel.log,我发现下一个日志:

[2016-04-26 08:45:49] testing.ERROR: exception 'ErrorException' with message 'Trying to get property of non-object' in C:\xampp\htdocs\STP\storage\framework\views\76c117f88e2ab8d2c5f85f5187e254573559a2c3.php:7 Stack trace:

和一个日志:

Next exception 'ErrorException' with message 'Trying to get property of non-object (View: C:\xampp\htdocs\STP\resources\views\admin\languages\showAll.blade.php)' in C:\xampp\htdocs\STP\storage\framework\views\76c117f88e2ab8d2c5f85f5187e254573559a2c3.php:7

Stack trace:

和我的看法我访问$语言属性与:

$语言 - > char,$ language-> name

但它是数组,所以我应该访问:

$语言[ '炭'],$语言[ '名']

和两个测试现在正常工作并返回状态码200

谢谢大家的帮助。