我想在laravel中通过phpunit进行登录测试。我有5.5所以不支持访问方法。这就是我正在做的事情
public function testLoginPost(){
Session::start();
$response = $this->call('POST', 'login', [
'email' => 'sokhter@yahoo.com',
'password' => '123456',
'_token' => csrf_token()
]);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('auth.login', $response->original->name());}
```
c:\wamp64\www\fundtheneedy\tests\Unit>phpunit Fundtheneedy
PHPUnit 6.5.8 by Sebastian Bergmann and contributors.
.F 2 / 2 (100%)
Time: 321 ms, Memory: 14.00MB
There was 1 failure:
1) Tests\Unit\Fundtheneedy::testLoginPost
Failed asserting that 302 matches expected 200.
C:\wamp64\www\fundtheneedy\tests\Unit\Fundtheneedy.php:30
FAILURES!
Tests: 2, Assertions: 2, Failures: 1.
```
答案 0 :(得分:0)
如果您纯粹查看响应代码,它将始终为302,这是URL重定向的响应代码,因为它将重定向,无论它是否失败。
您可以改为查看会话中是否存在错误,这是本文中提到的一种解决方法here.
$this->assertSessionMissing('errors');
答案 1 :(得分:0)
鉴于您将始终被重定向,无论登录成功或失败,您都必须断言您所获得的响应。
要测试成功登录,您可以执行以下操作:
$response->assertStatus(302);
$response->assertRedirect('http://your-website.com/user/dashboard');
要测试登录失败,您可以执行以下操作:
$response->assertStatus(302);
$response->assertRedirect('http://your-website.com/auth/login');
这应该足够了。
PS:显然,编辑网址以匹配您拥有的网址。