logo

测试

工厂

在开发应用程序时,您可能希望在应用程序的数据库中“存根”一个订阅记录,以便对$billable->subscribed()方法的调用返回true

为此,您可以在可计费模型的工厂类中添加一个“状态”方法。通常,这将是您的应用程序的UserFactory类。下面您将找到一个示例状态方法实现;但是,您可以根据应用程序的自身需求调整它。

php
use App\Models\User;

/**
 * Indicate that the user should have a subscription plan.
 *
 * @return $this
 */
public function withSubscription(string|int $planId = null): static
{
    return $this->afterCreating(function (User $user) use ($planId) {
        $subscription = $user->subscriptions()->create([
            'name' => 'default',
            'stripe_id' => Str::random(10),
            'stripe_status' => 'active',
            'stripe_price' => $planId,
            'quantity' => 1,
            'trial_ends_at' => null,
            'ends_at' => null,
        ]);

        $subscription->items()->create([
            'stripe_id' => Str::random(10),
            'stripe_product' => Str::random(10),
            'stripe_price' => $planId,
            'quantity' => 1,
        ]);
    });
}

定义完状态方法后,您可以在通过工厂创建模型时使用它。

php
$user = User::factory()->withSubscription('price_id')->create();

$user->subscribed(); // true