0

I am trying to test signup for user in pest here is my pest code

test('signup user', function () {
    $response = $this->post('signup-user',[
        'email' => '[email protected]',
        'first_name' => 'vishal',
        'last_name' => 'singh',
        'password' => '111111',
        'confirm_password' => '111111'
    ]);
        
    $response->assertSessionHas('success', 'You have registered successfully');  
});

am getting this error
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'testing.users' doesn't exist (Connection: mysql, SQL: select count(*) as aggregate from `users` where `email` = [email protected])   

  at D:\laravel-tailwind\laravelwithtailwind\tests\Feature\AppTest.php:36
     32▕         'password' => '111111',
     33▕         'confirm_password' => '111111'
     34▕     ]);
     35▕
  ➜  36▕     $response->assertSessionHas('success', 'You have registered successfully');
     37▕ });
     38▕

on docker all the containers are running well.and i have users table in my database,when i am testing someting related to data base or mysql am getting error

This is my signup_user function:

public function signupUser(Request $request) {
    $request->validate([
        'email'=>'required|email|unique:users',
        'first_name'=>'required', 
        'last_name'=>'required', 
        'password'=>'required|min:6|max:12', 
        'confirm_password'=>'required|min:6|max:12'
    ]);
    $user = new User(); 
    $user->email = $request->email; 
    $user->first_name = $request->first_name; 
    $user->last_name = $request->last_name; 
    $user->password = Hash::make($request->password); 
    $user->confirm_password = Hash::make($request->confirm_password);

I want to test this case:

test('user can signup', function () {
    $userData = [ 'email' => '[email protected]', 'first_name' => 'vishal', 'last_name' => 'singh', 'password' => '123123', 'confirm_password' => '123123', ];
    $this->post(route('signup-user'), $userData)
         ->assertSessionHas('success', 'You have registered successfully');
    $this->assertDatabaseHas('users', [ 'email' => '[email protected]', 'first_name' => 'vishal', 'last_name' => 'singh', ]);
});

1 Answers1

-1

According to the Laravel documentation, Sail overrides the DB name you defined in the .env file when you run the tests. You need to remove the following line from your phpunit.xml file: it is solved now thankyou

  • Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Mar 29 '23 at 00:12