deinternetjongens / laravel-api-factories
此包为您的测试套件提供数据库工厂体验,以模拟Http调用
2.3.0
2024-05-30 14:17 UTC
Requires
- php: ^7.4|^8.0|^8.1
- illuminate/contracts: ^8.37|^9.0|^10.0|^11.0
- spatie/laravel-package-tools: ^1.11
Requires (Dev)
- brianium/paratest: ^6.2|^7.4
- nunomaduro/collision: ^5.3|^6.0|^7.0|^8.0
- orchestra/testbench: ^6.0|^7.0|^8.0|^9.0
- phpunit/phpunit: ^9.4|^10.5
- spatie/laravel-ray: ^1.26
- vimeo/psalm: ^4.4|^5.22
README
Laravel Api Factories
此包为您的测试套件提供数据库工厂体验,以模拟Http调用
安装
您可以通过composer安装此包
composer require deinternetjongens/laravel-api-factories
使用方法
生成Api工厂
php artisan make:api-factory NewsPostResponse
新的Api工厂类将放置在您的tests/Factories目录中。
配置Api工厂
Api工厂看起来与Laravel数据库工厂几乎相同,除了它扩展了ApiFactory
类,您不需要指定一个模型。
namespace Tests\Factories; use DIJ\ApiFactories\ApiFactory; class NewsPostResponseFactory extends ApiFactory { protected ?string $wrapper = ResponseFactoryWrapper::class; /** * Define the response's default state. * * @return array<string,mixed> */ public function definition(): array { return [ 'title' => $this->faker->title, 'intro' => $this->faker->paragraph(), 'article' => $this->faker->paragraphs(4), 'author' => $this->faker->name, 'likes' => $this->faker->randomNumber(2), 'published_at' => $this->faker->dateTime(), ]; } } class ResponseFactoryWrapper extends ApiFactory { protected ?string $wrapper = 'data'; /** * Define the response's default state. * * @return array<string,mixed> */ public function definition(): array { return [ 'items' => $this->children(), 'meta' => [ 'total' => rand(0, 10), ] ]; } }
使用Api工厂
use \Illuminate\Support\Facades\Http; $response = NewsPostResponseFactory::new() ->state(new Sequence( ['author' => 'Taylor'], ['author' => 'Mohammed'], ['author' => 'Dries'] )) ->count(15) ->make(); Http::fakeSequence()->push($response);
测试
composer test
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
请查看我们的安全策略,了解如何报告安全漏洞。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。