【问题标题】:Laravel Unit Test - POST Request PayloadLaravel 单元测试 - POST 请求有效负载
【发布时间】:2015-02-23 03:38:57
【问题描述】:

我在为 Laravel 创建单元测试用例方面需要帮助。这是一个 API 端点,接受 json 作为 POST 有效负载(不是 POST 表单),基本上只是基于该 json 对象在数据库中创建一个条目。 API 工作正常,但我在创建单元测试时遇到了问题。

控制器代码包含

$request = Request::instance();
$content = $request->getContent();
$inputRequest = json_decode($content);

不知道如何将payload传入单元测试代码(扩展Illuminate\Foundation\Testing\TestCase

有人可以帮忙吗?

谢谢大家

【问题讨论】:

    标签: php laravel phpunit


    【解决方案1】:

    在单元测试中使用 laravel 提供的call() 方法时。

    第六个参数$content(String)可用于在测试用例类中传入post payload:

    $this->call($method, $uri, $parameters, $files, $server, jsonencode($yourdata), $changeHistory);
    

    【讨论】:

    • 谢谢先生,它有效。我认为您的意思是 json_encode 而不是 jsonencode。但是,如果我没有真正设置 $files 和 $server,是否有一种更优雅的方式来调用函数,而不是为这两个传递空数组,只是为了到达 $content?再次感谢
    【解决方案2】:

    使用替代action()方法时,请确保在$uri之后添加一个额外的数组,签名有点不同,它有$wildcards数组:

    Response::action(
        string $method, 
        string $action, 
        array $wildcards = array(), 
        array $parameters = array(), 
        array $files = array(), 
        array $server = array(), 
        string $content = null, 
        bool $changeHistory = true
    )
    

    【讨论】:

      猜你喜欢
      • 2018-04-23
      • 2015-09-04
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      • 2013-09-23
      相关资源
      最近更新 更多