laravel-captcha icon indicating copy to clipboard operation
laravel-captcha copied to clipboard

Mocking CAPTCHA

Open cosmin84 opened this issue 4 years ago • 1 comments

Hello, Is there any way to mock the CAPTCHA in an unit for feature test? Thanks!

cosmin84 avatar Apr 06 '20 09:04 cosmin84

My solution, forcing the captcha validation rule to just return true:

public function testSomething()
{
    $this->mockValidatorExtension(config('bone.captcha.validator'), function () { return true; });

    //.......
}

/**
 * @param string $rule
 * @param \Closure|string $extensionStub
 */
private function mockValidatorExtension($rule, $extensionStub)
{
    $validator = $this->app->get('validator');

    $reflection = new ReflectionClass($validator);
    $property = $reflection->getProperty('extensions');
    $property->setAccessible(true);

    $extensions = $property->getValue($validator);

    $extensions[$rule] = $extensionStub;

    $property->setValue($validator, $extensions);
}

credits: https://github.com/framgia/laravel-test-guideline/blob/master/en/Unit/Validation.md

ismaail avatar Oct 02 '20 01:10 ismaail