Как дождаться перезагрузки страницы в интеграционном тестировании Laravel


У нас есть действие по редактированию профиля пользователя, которое перенаправляет на ту же страницу. Здесь seePageIs(), похоже, не ждет загрузки новой страницы.

Следующий тест завершается неудачей, так как новое имя пользователя не найдено в ответе. Когда мы загрузили страницу профиля вручную после теста, она была обновлена должным образом.

public function testCanEditUserProfileAsConsumer()
{
    $this->loginConsumer();

    $this->visit('/user/profile');
    $firstName = $this->faker->firstname;
    $name = $this->faker->name;


    $this->within('#userEditForm', function() use ($firstName, $name) {
        $this->type($firstName, 'firstname');
        $this->type($name, 'surname');
        $this->press('Speichern');
    });

    // here: how to wait for page reload ?
    $this->seePageIs('/user/profile');
    $this->see($firstName);
    $this->see($name);
}

редактировать

    $this->within('#userEditForm', function() use ($firstName, $lastname) {
        $this->type($firstName, 'firstname');
        $this->type($lastname, 'surname');
        $this->press('Speichern')
            ->seePageIs('/user/profile')
            ->see($firstName)
            ->see($lastname);
    });

Также не работает

Author: Alex, 2016-10-04

1 answers

Проблема была в другом. Laravel - это перезагрузка страницы при нажатии кнопки.

В представлении профиля пользователя мы используем Auth::user() для отображения информации.

Когда я делаю

    Auth::setUser(Auth::user()->fresh());

В пользовательском контроллере это работает.

Не очень удовлетворительное решение, но оно проясняет первоначальный вопрос.

 0
Author: Alex, 2016-10-06 09:12:30