Тестирование функций Laravel Cashier с проблемой определения области?
В начале своего теста я создаю экземпляр фабричного пользователя и запускаю с ним различные тесты. В конце теста я запускаю свои утверждения, которые не выполняются. Однако, если я перезагружаю пользователя и запускаю те же утверждения, которые они пропускают.
Извиняюсь за довольно грубый пример этого вопроса. Чтобы проиллюстрировать проблему, я добавил отладку в свой тест:
dump(get_class($this->user) . ' : ' . $this->user->currentPlan());
$reloadUser = \App\User::find($this->user->id);
dump(get_class($reloadUser) . ' : ' . $reloadUser->currentPlan());
два дампа должны быть одинаковыми, но вывод:
"App\User : "
"App\User : Professional Annual"
метод currentPlan()
:
public function currentPlan()
{
if ($this->subscription('plan')) {
$plan = Plan::where('stripe_id', $this->subscription('plan')->stripe_plan)->first();
return $plan->nickname;
}
return false;
}
Я надеюсь, что это показывает проблему, но, пожалуйста, спросите, если что-то не ясно.
ТИА
1 ответ
Кажется, что происходит какое-то кэширование. Это делает трюк.
$this->user = $this->user->fresh();