我需要在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']);
...
}
但是此函数在数据库中创建实际行。我该如何为该请求模拟数据库?
答案 0 :(得分:0)
如果您不想在数据库中创建新行,则可以使用DatabaseTransactions
。
只需将其添加到您的测试中:
use Illuminate\Foundation\Testing\DatabaseTransactions;
class ExampleTest extends TestCase
{
use DatabaseTransactions;
...
您还可以阅读here,了解更多交易内部信息。
还有一个helpful answer。
祝你好运!