【发布时间】:2019-09-07 21:57:11
【问题描述】:
我想在 Laravel 中为 API 调用编写测试。我创建了一个模型工厂来播种我的测试数据库,以便 API 调用可以返回一些东西。在模型工厂内部,我使用 Faker 为模型属性生成随机数据。我在测试开始时使用这个工厂,所以数据是在运行时创建的。
如何测试 API 调用的结果?问题是在每次执行测试期间,由于随机生成的数据,API 调用可能会返回不同的结果。因此,我不能只将 APi 调用的结果保存在 .json 文件中,并将其与测试中 API 调用的实际结果进行比较。
我知道seeJsonStructure()方法(https://laravel.com/docs/5.3/application-testing#verifying-structural-match),但我不想使用它。
所以这是我目前的尝试,但不起作用:
$cars = factory(Car::class)->times(2)->create();
$this->json('GET', '/api/cars');
$expected = File::get('cars.json');
$this->seeJson((array) json_decode($expected));
【问题讨论】:
-
不使用
seeJsonStructure()的原因是什么?
标签: php laravel testing laravel-5 faker