Как сделать чтобы тесты сохранялись в тестовую бд?

Я провожу тесты, с подтверждением, только мне нужно чтобы по ресту сохранялись данные не в основную бд, а в тестовую, как примерно это можно реализовать?
Моя реализация
/**
     * Успещная регистрация
     */
    public function testRegisterSuccess()
    {
        $response = $this->getPathSuccess('POST', '/api/register', ['email' => 'test3@test.net', 'password' => 'test123']);
        $response->assertJsonStructure([
           'success',
           'error',
           'response' => ['message'],
           'message'
        ]);
    }
/**
     * Проверяет на успешность запроса на регистрацию
     * @param $method
     * @param $url
     * @param $data
     *
     * @return \Illuminate\Foundation\Testing\TestResponse
     */
    protected function getPathSuccess(string $method, string $url, array $data)
    {
        return $this->json($method, $url, $data)
            ->assertStatus(200)
            ->assertHeader('Content-type', 'application/json;charset=utf-8');
    }

Контроллер если нужен
public function register(ApiRegister $request)
    {
        $request->validated();
        try {
            User::create([
                'name' => $request->input('name'),
                'email' => $request->input('email'),
                'password' => Hash::make($request->input('password'))
            ]);
            return ResponseApi::response(['message' => 'Пользователь создан']);
        } catch (\Exception $exception){
            return ResponseApi::response([], false, 500, ['errors' => 'Произошла ошибка']);
        }
    }

в /confin/database.php добавил
'testing' => [
            'driver' => 'pgsql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'test_database'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],

В .env.testing изменил
APP_ENV=testing

DB_CONNECTION=testing
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=test_database
DB_USERNAME=implant_user
DB_PASSWORD=kazan1811

И в phpunit.xml
<env name="APP_ENV" value="testing"/>
        <env name="DB_CONNECTION" value="testing"/>

Потом применил миграцию
php artisan migrate --database=testing --env=testing

Миграция применилась, таблицы созданы, но теперь вопрос, как сделать так, чтобы данные тестовые, записывались в тестовую бд test_database.
  • Вопрос задан
  • 201 просмотр
Решения вопроса 1
Stasgar
@Stasgar
Обученная макака
<env name="DB_DATABASE" value="test_database"/>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы