Laravel 5 PHPUnit - 从路由返回了无效的 JSON

Posted

技术标签:

【中文标题】Laravel 5 PHPUnit - 从路由返回了无效的 JSON【英文标题】:Laravel 5 PHPUnit - Invalid JSON was returned from the route 【发布时间】:2016-03-13 05:13:13 【问题描述】:

路线

Route::group(array('prefix' => 'api'), function() 
   Route::resource('test', 'TestController', array('only' => array('index', 'store', 'destroy', 'show', 'update')));
);

控制器

public function store(Request $request) 
    return response()->json(['status' => true]);

单元类

public function testBasicExample() 
    $this->post('api/test')->seeJson(['status' => true]);

phpUnit 结果:

1) ExampleTest::testBasicExample

路由返回了无效的 JSON。

也许抛出了异常?有人看到问题了吗?

【问题讨论】:

【参考方案1】:

问题在于 CSRF 令牌

您可以通过使用 WithoutMiddleware 特征来 disable the middleware:

<?php

use Illuminate\Foundation\Testing\WithoutMiddleware;

class ExampleTest extends TestCase

    use WithoutMiddleware;

    //

或者,如果您只想禁用一些测试方法的中间件,您可以在测试方法中调用withoutMiddleware 方法:

<?php

class ExampleTest extends TestCase

    /**
     * A basic functional test example.
     *
     * @return void
     */
    public function testBasicExample()
    
        $this->withoutMiddleware();

        $this->visit('/')
             ->see('Laravel 5');
    

【讨论】:

有没有办法查看抛出的异常? 查看异常: $this->json('POST', 'api/test'); dd($this->response->getContent()); 流明中没有中间件。有人知道怎么安装吗? 对于流明,use Laravel\Lumen\Testing\WithoutMiddleware;@KirenSiva

以上是关于Laravel 5 PHPUnit - 从路由返回了无效的 JSON的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 路由仅在 phpunit 测试期间返回 302 而不是 404 响应

如何在 laravel 5.5 中使用 phpunit 测试中间件?

Laravel - PHPUnit 中的伪造路由

如何创建仅用于测试的 Laravel 路由(phpunit)?

phpunit 测试资源 laravel 5.5 返回集合而不是 json

Laravel 5.5:PHPUnit(带覆盖)不喜欢来自多个文件的路由并抛出“尚未设置外观根”。没有报道它是绿色的