我们的团队使用laravel创建了Restful API。我们正在使用PHPUNIT对api进行单元测试,但在测试POST请求时遇到了问题。
以下是代码:
public function create_new_account()
{
$account = array (
'accountName'=>$this->fake->word,
'contactName'=>$this->fake->name,
'contactEmail'=>$this->fake->email,
'address'=>$this->fake->sentence
);
$accounts = json_encode($account);
$this->call('POST','accounts',$accounts);
$this->assertResponseOk();
}
这测试我们是否可以使用API创建帐户,但我总是得到错误
1) ApiServicesTest::create_new_account
ErrorException: Argument 2 passed to Symfony\Component\HttpFoundation\Request::createRequestFromFactory() must be of the type array, string given, called in /var/www/mcx-api/vendor/symfony/http-foundation/Request.php on line 421 and defined
/var/www/mcx-api/vendor/symfony/http-foundation/Request.php:1999
/var/www/mcx-api/vendor/symfony/http-foundation/Request.php:421
/var/www/mcx-api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/CrawlerTrait.php:775
/var/www/mcx-api/tests/ApiServicesTest.php:35
当您使用像httprequester / postman这样的客户端测试api时,它运行正常。 api需要传递一个JSON数据,所以如果我传递了数组,api就会插入空值。但是当我将数据转换为json时,我得到了上面的错误。当我尝试dd($ accounts)时,这里是输出
"{"accountName":"rerum","contactName":"Ms. Mireille Veum Jr.","contactEmail":"Lindgren.Damaris@gmail.com","address":"Vel quidem consectetur nemo excepturi quod."}"
这意味着数据被转换为json格式并且应该被api接受但是我没有得到laravel抱怨的内容。有人能指出我做错了吗?非常感谢你!
答案 0 :(得分:2)
尝试将json作为内容发送。
<a></a>