deinternetjongens/laravel-api-factories

此包为您的测试套件提供数据库工厂体验,以模拟Http调用

2.3.0 2024-05-30 14:17 UTC

This package is auto-updated.

Last update: 2024-08-30 14:54:04 UTC


README

Social Card of Laravel Api Factories

Laravel Api Factories

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

此包为您的测试套件提供数据库工厂体验,以模拟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)。请参阅许可证文件以获取更多信息。