Laravel 测试集合 JSON 使用 assertJson 的响应
Laravel Testing Collection JSON Response with assertJson
我想编写一个测试来创建一个用户,然后使用该路由测试该用户是否显示在用户 API 索引集合中。
我通读了 documentation 关于使用 Laravel 和 PHPUnit 编写 REST API 测试的文章。我很难让 assertJson
通过,因为它返回以下错误:
Failed asserting that an array has the subset Array &0 (
'name' => 'Buck Trantow V'
'email' => 'marianne.leffler@example.org'
'username' => 'hhudson'
).
--- Expected
+++ Actual
@@ @@
array (
),
),
- 'name' => 'Buck Trantow V',
- 'email' => 'marianne.leffler@example.org',
- 'username' => 'hhudson',
)
测试:
public function testUserIndex()
{
$user = factory(User::class)->create();
$response = $this
->actingAs($user, 'api')
->json('GET', '/api/users')
->assertStatus(200);
$response
->assertJson([
'name' => $user->name,
'email' => $user->email,
'username' => $user->username,
]);
}
路由/用户控制器:
Route::resource('users', 'UserController');
用户控制器:
public function index()
{
return User::all();
}
在这里张贴给任何需要它的人。我发现 assertJsonFragment
适用于这种情况。
$response
->assertJsonFragment([
'name' => $user->name,
'email' => $user->email,
'username' => $user->username,
]);
我想编写一个测试来创建一个用户,然后使用该路由测试该用户是否显示在用户 API 索引集合中。
我通读了 documentation 关于使用 Laravel 和 PHPUnit 编写 REST API 测试的文章。我很难让 assertJson
通过,因为它返回以下错误:
Failed asserting that an array has the subset Array &0 (
'name' => 'Buck Trantow V'
'email' => 'marianne.leffler@example.org'
'username' => 'hhudson'
).
--- Expected
+++ Actual
@@ @@
array (
),
),
- 'name' => 'Buck Trantow V',
- 'email' => 'marianne.leffler@example.org',
- 'username' => 'hhudson',
)
测试:
public function testUserIndex()
{
$user = factory(User::class)->create();
$response = $this
->actingAs($user, 'api')
->json('GET', '/api/users')
->assertStatus(200);
$response
->assertJson([
'name' => $user->name,
'email' => $user->email,
'username' => $user->username,
]);
}
路由/用户控制器:
Route::resource('users', 'UserController');
用户控制器:
public function index()
{
return User::all();
}
在这里张贴给任何需要它的人。我发现 assertJsonFragment
适用于这种情况。
$response
->assertJsonFragment([
'name' => $user->name,
'email' => $user->email,
'username' => $user->username,
]);