2016-10-04 2 views
5

Wir haben eine Aktion, um das Benutzerprofil zu bearbeiten, das auf die gleiche Seite umleitet. Hier scheint seePageIs() nicht auf das Laden der neuen Seite zu warten.Warten auf Neuladen einer Seite in Laravel-Integrationstest

Der folgende Test schlägt fehl, da der neue Benutzername in der Antwort nicht gefunden wird. Wenn wir die Profilseite nach dem Test manuell geladen haben, wurde sie ordnungsgemäß aktualisiert.

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

bearbeiten

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

auch nicht

+0

Bewegen Sie Ihren Code in das Innere und ketten Sie es mit der Presse (möglicherweise). Im Allgemeinen scheinen Sie nicht zu warten, nachdem die Presse gerufen wurde. – apokryfos

Antwort

0

Das Problem arbeiten war eine andere. Laravel ist Neuladen der Seite beim Drücken der Taste.

In der Ansicht des Benutzerprofils verwenden wir Auth::user(), um Informationen anzuzeigen.

Wenn ich ein tun

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

im Anwender Controller, es funktioniert.

Nicht eine sehr befriedigende Lösung - aber das macht die ursprüngliche Frage klar.

Verwandte Themen