Поддельный наблюдатель для тестирования? - PullRequest
0 голосов
/ 29 марта 2020

Я создаю тест для проверки возможности ежемесячной подписки через конечную точку API. У меня есть наблюдатель подписки, который назначает пользователю роль на основе его подписки при создании новой подписки, и это вызывает у меня некоторые проблемы с тестированием.

У меня есть SubscriptionObserver, который имеет следующее:

/**
 * Handle the subscription "created" event.
 *
 * @param  \App\Subscription  $subscription
 * @return void
 */
public function created(Subscription $subscription)
{
    ($subscription->stripe_plan == 'monthly') ? auth()->user()->assignRole('basic-user') : auth()->user()->assignRole('premium-user');
}

Мой тест:

/** @test */
public function it_can_create_a_monthly_subscription()
{

    $data = [
      'plan' => 'monthly',
      'payment' => 'pm_card_visa',
    ];

    $response = $this->actingAs($this->unsubscribedUser, 'api')->post('api/subscriptions', $data);


    $response
    ->assertSuccessful()
    ->assertJsonStructure([
      "subscription_created",
      "subscription" => [
          "name",
          "stripe_id",
          "stripe_status",
          "stripe_plan",
          "quantity"
      ]
    ]);

}

Я получаю ошибку:

1) Tests\Feature\SubscriptionTest::it_can_create_a_monthly_subscription
Error: Call to a member function assignRole() on null

Любые предложения о том, как я могу решить эту проблему?

...