Класс правил Mocking Recaptcha не разрешается должным образом в Laravel - PullRequest
0 голосов
/ 25 января 2020

Я написал тестовый пример следующим образом:

 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();
    }

И я решаю этот Recaptcha класс на валидаторе на RegisterController следующим образом:

...//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



Но я Исключение, которое я не знаю, почему это так. Вот ошибка:

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

Хотя, когда я делаю экземпляр этого класса в том же тестовом методе и пытаюсь запустить метод message() или pass(), он корректно разрешает ложную Recaptcha. Но что-то ошибка в валидаторе c

...