samedi 25 janvier 2020

Mocking Recaptcha Rule class not resolving properly in Laravel

I have written test case like this:

 public function testUserCanRegister()
    {


        $captcha_mock=Mockery::mock('Recaptcha');
        $captcha_mock->shouldReceive('passes')->with('recaptcha', 'yes')->andReturn(true);
        $captcha_mock->shouldReceive('message')->andReturn('Verification failed on captcha');
        $this->app->instance(Recaptcha::class, $captcha_mock);
        $response = $this->post('/register', [
          'name' => 'Abhiraj',
          'email' => 'abhiraj@stockarea.io',
          'password' => 'Hello@123',
          'email_confirmation' => 'abhiraj@stockarea.io',
          'phone' => 9871506133,
          'recaptcha' => '1'
        ]);

        $response->assertRedirect('/');
        $response->assertSessionHasNoErrors();
    }

And I am resolving this Recaptcha class on validator on RegisterController like this:

...//abovecode 

return Validator::make($data, [
            'name' => ['required', 'string', 'max:255','regex:/(?=.*[a-z A-Z])/'],
            'company_name' => ['string', 'max:255','regex:/(?=.*[a-z A-Z])/'],
            'phone' => ['required','integer','digits:10'],
            'recaptcha' => ['required',app(Recaptcha::class)],

...//more code



But I am getting thrown Exception which I am not aware much why it is. Here is the error:

Method Illuminate\Validation\Validator::validateMockery0Recaptcha#000000006c8e3645000000007c2d43d7 does not exist. {"exception":"[object] (BadMethodCallException(code: 0): Method Illuminate\\Validation\\Validator::validateMockery0Recaptcha#000000006c8e3645000000007c2d43d7 does not exist. at C:\\Stockarea\\stockarea-provider\\vendor\\laravel\\framework\\src\\Illuminate\\Validation\\Validator.php:1187

Though when I make instance of this class in same test method and try to run message() or pass() method it is correctly resolving the mocked Recaptcha. But something error in validator c



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire