假观察员进行测试?

时间:2020-03-29 16:23:02

标签: laravel testing phpunit

我正在构建一个测试,以测试可以通过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

关于如何解决此问题的任何建议?

0 个答案:

没有答案