Php 如何在单元测试中传递对象作为参数?(拉雷维尔)
我在下面有一个数据对象,我试图使用postman进行测试。我只是不知道如何在laravel的单元测试中实现这一点。我访问过这个网站,但对我的情况没有帮助Php 如何在单元测试中传递对象作为参数?(拉雷维尔),php,laravel,unit-testing,laravel-unit-test,Php,Laravel,Unit Testing,Laravel Unit Test,我在下面有一个数据对象,我试图使用postman进行测试。我只是不知道如何在laravel的单元测试中实现这一点。我访问过这个网站,但对我的情况没有帮助 { "user_id": 1, "name": "juan", "address": [ "state": "Auckland", "country"
{
"user_id": 1,
"name": "juan",
"address": [
"state": "Auckland",
"country": "New Zealand",
],
"school": [
{
"school_name": "Kristin School",
"year": 2016
},
{
"school_name": "ACG Parnell College",
"year": 2018
},
],
// and more...
}
在单元测试中,我们如何通过上述对象?有没有办法做到这一点
$response = $this->post('/logbooks/user', ['Authorization': 'Bearer' + $token]);
如中所示,您可以发送一个php数组,如下所示:
$payload=[
“用户id”=>1,
“姓名”=>“胡安”,
“地址”=>[
“州”=>“奥克兰”,
“国家”=>“新西兰”,
],
];
$response=$this->postJson(
“/logbooks/user”,$payload,['Authorization':'Bearer'+$token]
);
它接受php$payload
数组并将其编码为JSON并发送。
如果您有一个对象,您可以使用中的$myArray=(array)$myObject
强制转换它,您可以发送一个php数组,如下所示:
$payload=[
“用户id”=>1,
“姓名”=>“胡安”,
“地址”=>[
“州”=>“奥克兰”,
“国家”=>“新西兰”,
],
];
$response=$this->postJson(
“/logbooks/user”,$payload,['Authorization':'Bearer'+$token]
);
它接受php$payload
数组并将其编码为JSON并发送。
如果您有一个对象,您可以使用
$myArray=(array)$myObject
强制转换它,首先要知道这样的测试不是“单元测试”类型。
请注意,代码将运行,您应该注意运行代码可能需要的更改(更新数据库中的数据,联系外部提供商)
当然,所有这些都可以被嘲笑,建议您仔细阅读
class FooTest extends TestCase {
public function testBar()
{
$response = $this->post('/api/v1/yourapi',
[
"user_id" => 1,
"name" => "juan",
"address" => [
"state" => "Auckland",
"country" => "New Zealand"
],
"school" => [
[
"school_name" => "Kristin School",
"year" => 2016
],
[
"school_name" => "ACG Parnell College",
"year" => 2018
]
]
]);
$response->assertStatus(200);
$response->assertJsonStructure([...]);
$response->assert....();
}
}
正如我在下面的评论中所写,您附加的JSON无效。
您将数组视为对象,添加了不必要的逗号
建议使用IDE知道要识别的数组,首先要知道这样的测试不是“单元测试”类型。 请注意,代码将运行,您应该注意运行代码可能需要的更改(更新数据库中的数据,联系外部提供商) 当然,所有这些都可以被嘲笑,建议您仔细阅读
class FooTest extends TestCase {
public function testBar()
{
$response = $this->post('/api/v1/yourapi',
[
"user_id" => 1,
"name" => "juan",
"address" => [
"state" => "Auckland",
"country" => "New Zealand"
],
"school" => [
[
"school_name" => "Kristin School",
"year" => 2016
],
[
"school_name" => "ACG Parnell College",
"year" => 2018
]
]
]);
$response->assertStatus(200);
$response->assertJsonStructure([...]);
$response->assert....();
}
}
正如我在下面的评论中所写,您附加的JSON无效。
您将数组视为对象,添加了不必要的逗号
建议使用IDE知道可以识别的数组我忘了一些东西,您可以再次检查我的数据对象(有效负载)以通过,我更新了问题描述您输入的JSON无效,一个附件是正确的:
{“user_id”:1,“name”:“juan”,“address”:{“state”:“Auckland”,“country”:“新西兰”},“学校”:[{“学校名称”:“克里斯汀学校”,“年份”:2016},{“学校名称”:“ACG帕内尔学院”,“年份”:2018}]}
也更改了我的回答我忘了一些东西,你能再次检查我的数据对象(有效载荷)通过吗,我更新了问题描述您输入的JSON无效,有一个附件是正确的:{“user_id”:1,“name”:“juan”,“address”:{“state”:“Auckland”,“country”:“New zeland”},“school”:[{“school_name”:“Kristin school”,“year”:2016},{“school_name”:“ACG Parnell College”,“year:2018}]}
也改变了我的回答我发现我们使用的是“+”运算符,应该是句点。谢谢:)我发现我们使用的是“+”运算符,应该是句点。谢谢:)