【发布时间】:2016-04-08 14:58:13
【问题描述】:
我们在应用程序上使用“唯一”规则进行验证,但对于测试,我们通过使用存储库模式来模拟数据库层。有没有办法模拟unique 规则使其不尝试检查数据库?
我尝试模拟 Illuminate\Validation\Validator::validateUnique 它不起作用,但由于该方法受到保护。
【问题讨论】:
标签: php validation unit-testing laravel laravel-5.1
我们在应用程序上使用“唯一”规则进行验证,但对于测试,我们通过使用存储库模式来模拟数据库层。有没有办法模拟unique 规则使其不尝试检查数据库?
我尝试模拟 Illuminate\Validation\Validator::validateUnique 它不起作用,但由于该方法受到保护。
【问题讨论】:
标签: php validation unit-testing laravel laravel-5.1
unique 规则以及其他一些规则(例如 exists)使用 presence verifier 进行验证检查。默认情况下使用 DatabasePresenceVerifier。它实现了由 2 个方法组成的 PresenceVerifierInterface。您可以模拟该验证程序的方法并在测试期间使用它。您可以使用
访问验证器\Validator::getPresenceVerifier()
\Validator::setPresenceVerifier()
【讨论】: