Laravel 5:控制器测试 - PHPUnit的返回绿色

Laravel 5:控制器测试 - PHPUnit的返回绿色

问题描述:

下面这个简单的控制器测试发出“GET”请求PostsController @ index动作:Laravel 5:控制器测试 - PHPUnit的返回绿色

<?php 

class PostsControllerTest extends TestCase { 

    public function testIndex() 
    { 
     $response = $this->action('GET', '[email protected]'); 

    } 
} 

在我的理解,如果索引方法不存在我控制器,当我在命令行中调用phpunit时,我不应该得到绿灯。

然而,我的控制器看起来是这样的:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 

class PostsController extends Controller 
{ 
    /** 
    * Display a listing of the resource. 
    * 
    * @return Response 
    */ 
    // public function index() 
    // { 
    // // 
    // return 'Posts Index'; 
    //} 
} 

您可以清楚地看到索引方法被注释掉了,我仍然得到这个:

**OK (1 test, 0 assertions)** 

有什么建议?

你没有做出任何断言。您的测试不检查$response是否“OK”。

测试改成这样:

public function testIndex() 
{ 
    $response = $this->action('GET', '[email protected]'); 
    $this->assertEquals(200, $response->status()); 
} 

这个测试断言,页报以200 status code,这意味着它是成功的。

您可以阅读Laravel的测试here