我想在Laravel中编写API调用的测试。我创建了一个模型工厂来为我的测试数据库提供种子,因此API调用可以返回一些内容在模型工厂内部,我使用Faker为模型属性生成随机数据。我在测试开始时使用这个工厂,所以数据是在运行时创建的。
如何测试API调用的结果?问题在于,在每次执行测试期间,由于随机生成的数据,API调用可以返回不同的结果。所以我不能只在.json文件中保存APi调用的结果,并将其与测试中API调用的实际结果进行比较。
我知道qazxsw poo方法(qazxsw poo),但我不想使用它。
所以这是我目前的尝试不起作用:
seeJsonStructure()
您可以在Faker中设置种子值,如https://laravel.com/docs/5.3/application-testing#verifying-structural-match所述。
Seeding the Generator
您可能希望始终获得相同的生成数据 - 例如,在使用Faker进行单元测试时。生成器提供
$cars = factory(Car::class)->times(2)->create(); $this->json('GET', '/api/cars'); $expected = File::get('cars.json'); $this->seeJson((array) json_decode($expected));
方法,它为随机数生成器播种。使用相同的种子调用相同的脚本两次会产生相同的结果。here
这将为您提供跨测试运行的一致结果。