我正在构建一个测试,以测试可以通过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
关于如何解决此问题的任何建议?