Тестирование функций Laravel Cashier с проблемой определения области? - PullRequest
0 голосов
/ 10 февраля 2019

В начале своего теста я создаю экземпляр фабричного пользователя и запускаю с ним различные тесты.В конце теста я запускаю свои утверждения, которые не выполняются.Однако, если я перезагружаю пользователя и запускаю те же утверждения, которые они пропускают.

Извиняюсь за довольно грубый пример этой проблемы.Чтобы проиллюстрировать проблему, я добавил в свой тест некоторую отладку:

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;
    }

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

TIA

1 Ответ

0 голосов
/ 10 февраля 2019

Кажется, что происходит какое-то кэширование.Это делает трюк.

$this->user = $this->user->fresh();

...