首页 > 解决方案 > Laravel 测试 seeJson 包含

问题描述

我在运行单元测试后得到了这个结果。

结果:

1) Tests\Functional\Controllers\Api\UsersControllerTest::testUsersIndex
Unable to find JSON fragment
[[{"email":"FRoAff4@mail.com","id":"706"}]]
within
[{"data":[],"draw":0,"error":"Not Found","recordsFiltered":0,"recordsTotal":1}].
Failed asserting that false is true.

代码:

$this->seeJsonContains([
  'id'    => $user->id,
  'email' => $user->email,
]);

如果在参数中我添加true它有效。我不明白任务参数是这里的逻辑值(true,false)。

后:

$this->seeJsonContains([
  'id'    => $user->id,
  'email' => $user->email,
 ], true);

标签: laravelunit-testingtestingbrowser-testing

解决方案


的第二个参数seeJsonContains 否定断言,这意味着它将从 切换assertTrueassertFalse。这就是您的测试通过的原因,因为它将检查响应 JSON 是否包含idand email

要使您的测试通过,请确保您UsersController@testUsersIndex返回正确的 JSON。

在你的情况下:[[{"email":"FRoAff4@mail.com","id":"706"}]]


推荐阅读