Как создать макет модели в laravel тестировании - PullRequest
0 голосов
/ 29 марта 2020

Мне нужно протестировать функцию в UserController:

public function CreateUser(Request $request): Response
{    
    $user = User::firstOrCreate(['device_id' => $request->device_id]);
    return Response(['status'=> 'user created successfully'],200);
} 

, и я создаю тестовую функцию, аналогичную следующей:

public function testCreateUser()
{
    $mockUser = Mockery::mock(new App\User());
    $this->app->instance(App\User::class, $mockUser);
    $this->post(route('user_create'), ['device_id' => 'REC00ER']);
    ...
}

, но эта функция создает реальную строку в база данных. Как я могу макет базы данных для этого запроса?

1 Ответ

0 голосов
/ 29 марта 2020

Если вы не хотите создавать новую строку в БД, вы можете использовать DatabaseTransactions.

Просто добавьте ее в свой тест:

use Illuminate\Foundation\Testing\DatabaseTransactions;

class ExampleTest extends TestCase
{
    use DatabaseTransactions;
...

Больше вы можете прочитать здесь внутри транзакций.

Также один полезный ответ .

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...