Тестирование функций 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();

Другие вопросы по тегам