Phpunit测试Laravel 5.1 restful控制器

时间:2015-10-31 18:12:21

标签: php json rest laravel-5 laravel-5.1

我一直坚持这个问题一段时间,没有其他问题帮助我。

我正在使用Laravel 5.1和phpunit来测试一个安静的控制器。我的测试代码如下:

$this->post('/api/book', [ 'title' => 'my book'])
  ->assertResponseOk();

目标控制器具有以下代码:

Log::debug('title: ' . $request->json('title'));

即。在测试方面,我希望使用TestCase::post()方法发送请求,在服务器端,我希望使用Request::json()方法从请求中读取。但是,当我查看日志时,我看到以下空字符串

[2015-10-31 17:26:01] testing.DEBUG: title:   

这表明我的测试代码没有在请求中设置正确的数据,或者我的服务器代码没有正确读取请求。顺便说一句,服务器也失败了一些,反映了日志中缺少的标题值。

我也在使用a Firefox plugin, RESTClient来手动测试我的网络应用,我必须正确设置正文(使用title键周围的双引号,严格遵守JSON规范)以确保服务器代码工作。所以确切的格式是我遵循的一条路线,到目前为止没有成功。

所以我的问题是,在Laravel 5.1中,测试和服务器端的RESTful控制器最常用的推荐代码是什么?

1 个答案:

答案 0 :(得分:1)

您的日志为空的原因是因为此调用$request->json('title')实际上返回一个数组,而不是字符串。

https://github.com/illuminate/http/blob/master/Request.php#L552

访问密钥的正确方法如下:

Log::debug('title: ' . $request->title);

如下所述:

http://laravel.com/docs/5.1/requests#retrieving-input