Qui è il mio codice di prova:non possono testare reindirizza quando il test delle unità laravel 5
public function testRegistrationFailsIfNameIsEmpty()
{
$this->flushSession();
$response = $this->call('POST', '/signup', ['fullname' => '']);
$this->assertSessionHasErrors('fullname'); // Passes, expected
$this->assertTrue($response->isRedirection()); // Passes, expected
$this->assertRedirectedTo('/signup'); // Fails, unexpected.
}
Quando chiamo quel metodo, si tratta di convalidare l'input, e se la convalida non riesce, mi reindirizza torna a /signup
per mostrare la errori di validazione. L'ho provato manualmente nel browser e funziona come previsto.
Tuttavia, quando eseguo il test dell'unità sopra riportato, l'ultima asserzione non riesce e penso che sia stato reindirizzato a solo /
anziché /signup
.
Non ho idea del perché lo stia facendo. Se provo che un reindirizzamento è avvenuto, il test passa perché un reindirizzamento fa, si pensa che il reindirizzamento sia a /
invece di /signup
.
Ho disabilitato tutto il middleware quindi so che non è qualcosa come il middleware degli ospiti che pensa di essere connesso quando non lo sono.
EDIT: Risultati dei test:
There was 1 failure:
1) RegistrationTest::testRegistrationFailsIfNameIsEmpty
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'http://localhost/signup'
+'http://localhost'
Avete la possibilità di eseguire il debug del codice, altrimenti mi sento di raccomandare a installare tale un ambiente, sarà utile molte volte. – martinstoeckli
Come si verifica il metodo POST nel browser? sei sicuro di non aver provato GET? –