Я установил пользовательское правило проверки, например, так:
// Пользовательский созданный RepositoryProvider. php также зарегистрирован в приложении. php Массив 'provider'.
public $bindings = [
UserRepository::class => EloquentUserRepository::class,
];
public function boot(UserRepository $userRepository)
{
Validator::extend('user_email_unique', function($attribute, $value, $parameters) use($userRepository) {
return !$userRepository->findByEmailAddress($value)->exists();
});
}
// мой тест
class SignUpUserActionTest extends TestCase
{
public function setUp() : void
{
parent::setUp();
$this->app->bind(UserRepository::class, function() {
return new UserRepositoryMock();
});
}
}
В моем тесте я привязываю UserRepository к макету. Он отлично работает для извлечения данных, но поддерживает первоначальную привязку для расширения проверки и не перепривязывает используемый репозиторий. Поэтому при запуске модульных тестов они используют две разные реализации.
Как можно расширить валидатор, чтобы автоматическое разрешение c восстанавливалось при тестировании?
Спасибо.