繁体   English   中英

phpunit测试Laravel 5.1 Restful控制器

[英]Phpunit testing Laravel 5.1 restful controller

我在这个问题上停留了一段时间,因此没有其他问题对我有所帮助。

我正在使用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:   

这表明我的测试代码未在请求中设置正确的数据,或者我的服务器代码未正确读取请求。 顺便说一句,服务器也会出现更多故障,从而在日志中反映出缺少的标题值。

我还使用Firefox插件RESTClient来手动测试我的Web应用程序,并且必须正确设置主体(使用title键周围的双引号,严格遵守JSON规范)以确保服务器代码正常工作。 因此,确切的格式是我遵循的线索,到目前为止没有成功。

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

您的日志为空的原因是因为此调用$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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM