2016-06-02 1 views
0

Benutzer können sich nur am System anmelden, wenn ihr Konto aktiv ist. Ich benutze eine Fabrik, um einen Benutzer zu erstellen (zunächst ist ihr Status auf "ausstehend" gesetzt) ​​und versuche dann, auf das Anmeldeformular zu posten.Unit testing Benutzeranmeldung in Laravel

Von hier aus bin ich nicht sicher, welche Behauptungen ich tun muss. Ich habe bereits den Code geschrieben, der diese Funktionalität ausführt (ich habe einen benutzerdefinierten Validator im validateLogin-Formular) und dann wird eine Fehlermeldung ähnlich wie "Ihr Konto ist nicht aktiv" ausgegeben.

Was ist der beste Weg, um dies zu nähern? Was ich habe, so weit:

/** @test */ 
public function it_can_only_login_if_the_status_is_active() 
{ 
    $user = factory(User::class)->create(); 
    $this->post('login', ['email' => $user->email, 'password' => $user->password, '_token' => csrf_token()]); 
} 

Antwort

1

Mit dem Build in Laravel Testmethoden können Sie dies tun:

$user = factory(User::class)->create(); 

    $this->visit('/login') 
     ->type($user->email, 'email') 
     ->type($user->password, 'password') 
     ->press('Login') 
     ->see('your account is not active'); 

Ich kann die Codeception Bibliothek empfehlen, wenn Sie einige komplizierte Funktionen testen müssen, weil mit ihm Sie können Ergebnisse in der Datenbank überprüfen, Akzeptanz- und Funktionstests erstellen.

+0

Super danke. Nur ein kleines Problem, es sieht aus wie phpunit versucht, auf http: // localhost/login zu posten. Fehle ich irgendwo in meinen Tests eine Einstellung? – sjhuda

+0

In der ** TestCase ** Datei gibt es 'protected $ baseUrl = 'http: // localhost';' Sie können es mit Ihrer Domain ändern. – TheFallen

+0

Danke, ich habe immer noch ein paar Fehler, aber ich denke, das hat mit meinem Code zu tun. Danke für Ihre Hilfe! – sjhuda