chr*_*423 2 php testing faker laravel laravel-5
我想在 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));
Run Code Online (Sandbox Code Playgroud)
您可以按照此处所述在 Faker 中设置种子值。
播种发电机
您可能希望始终获得相同的生成数据——例如,当使用 Faker 进行单元测试时。生成器提供了一种
seed()方法,该方法为随机数生成器提供种子。使用相同的种子调用相同的脚本两次会产生相同的结果。Run Code Online (Sandbox Code Playgroud)<?php $faker = Faker\Factory::create(); $faker->seed(1234); echo $faker->name; // 'Jess Mraz I';
这将在测试运行中为您提供一致的结果。
| 归档时间: |
|
| 查看次数: |
1509 次 |
| 最近记录: |