Я сейчас проверяю логин и регистрируюсь. Проблема в том, что база данных не обновляется после каждого теста, поэтому она вызывает ошибку.
Ошибка, которую я получаю: идентификатор пользователя должен быть 1, но из-за того, что база данных не сбрасывается после каждого теста, идентификатор пользователя равен 2. Я создаю нового пользователя в своем логине и регистрирую тест.
1) Tests\Unit\RegisterTest::successful
Failed asserting that a row in the table [users] matches the attributes {
"id": 1,
"username": "JohnRock",
"email": "hello@email.com"
}.
Found: [
{
"id": 2,
"username": "JohnRock",
"email": "hello@email.com",
"password": "$#^TTUG#$ORY#$&*RY#$YRY#$:RY:#$YRU$#YRP",
"remember_token": null,
"created_at": "2018-05-13 03:41:35",
"updated_at": "2018-05-13 03:41:35"
}
].
<?php
namespace Tests\Unit;
use App\User;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
class RegisterTest extends TestCase
{
use RefreshDatabase;
/**
* A basic test example.
*
* @return void
*/
/** @test */
public function successful_register()
{
$username = 'JohnRock';
$email = 'hello@email.com';
$password = 'fjIRHJV@#(*UH(@#*H78))';
$user = [
'username' => $username,
'email' => $email,
'password' => $password,
'password_confirmation' => $password
];
$response = $this->post('/register', $user);
$this->assertDatabaseHas('users', [
'id' => 1,
'username' => $username,
'email' => $email
]);
}
}
<?php
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
class LoginTest extends TestCase
{
use RefreshDatabase;
/**
* A basic test example.
*
* @return void
*/
/** @test */
public function login_successful()
{
$user = factory('App\User')->create();
$response = $this->post('/login', [
'username' => $user->username,
'password' => $user->password
]);
$response->assertRedirect('/');
}
}