Laravel单元测试-POST请求有效载荷

6
我可以帮助您创建一个Laravel的单元测试案例,这个API端点接受JSON作为POST负载(而不是POST表单),根据该JSON对象在数据库中创建一个条目。API正常工作,但我在创建单元测试时遇到麻烦。
控制器代码如下:
$request = Request::instance();
$content = $request->getContent();
$inputRequest = json_decode($content);

我不知道如何将有效载荷传递到单元测试代码中(扩展Illuminate\Foundation\Testing\TestCase)。有人能帮忙吗?非常感谢。
2个回答

4

在单元测试中使用 Laravel 提供的 call() 方法时,可以使用第六个参数 $content(String) 传递测试用例类中的 POST 负载。

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

谢谢您,先生,它起作用了。我想您是指 json_encode 而不是 jsonencode。但是,如果我不真正设置 $files 和 $server,是否有更优雅的方法来调用该函数,而不是为这两个参数传递空数组,只是为了获取 $content?再次感谢。 - Don Djoe

1
使用替代的 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
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接