Тесты для запроса POST с зарегистрированным пользователем - PullRequest
0 голосов
/ 13 января 2020

Мне нужно написать тесты для POST-запроса. Большинству из них нужен зарегистрированный пользователь (иногда с некоторым разрешением). Я написал этот тест:

    <?php

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
use App\User;

class ExampleTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        // $user = new User([
        //     'id' => 1,
        //     'name' => 'yisdfsdsh',
        //     'password' => 'helloWorld',
        //     'admin' => 1
        // ]);
        $user = User::find(1);
        $response = $this->actingAs($user)->withHeaders([
            'X-Header' => 'Value',
        ])->json('POST', '/change-password', ['password' => 'newpassword', 'confirmPassword' => 'newpassword']);
        $response->assertStatus(201);

        // $this->get('/')->assertStatus(200);
    }
}

Но у меня есть ошибка:

Подсветка \ База данных \ QueryException: не удалось найти драйвер (SQL: PRAGMA foreign_keys = ON;)

Я тоже пробовал:

$user = new User([
        'id' => 1,
        'name' => 'yisdfsdsh',
        'password' => bcrypt('helloWorld'),
        'admin' => 1
    ]);

Но он получает статус 500. Как я могу написать этот тест? Метод этого контроллера должен обновить пароль пользователя.

@ Edit Я попытался написать код с фабрикой:

$user = factory(User::class)->create();
$response = $this->actingAs($user)->withHeaders([
    'X-Header' => 'Value',
])->json('POST', '/change-password', ['password' => 'newpassword', 'confirmPassword' => 'newpassword']);
$response->assertStatus(201);

Но у меня та же ошибка

Осветить \ Database \ QueryException: не удалось найти драйвер (SQL: PRAGMA foreign_keys = ON;)

...