Php Laravel验证器-连接到数据库
我在Laravel的验证规则中有一个数据库限制:Php Laravel验证器-连接到数据库,php,validation,unit-testing,laravel,phpunit,Php,Validation,Unit Testing,Laravel,Phpunit,我在Laravel的验证规则中有一个数据库限制: $rules = [ 'customer_id' => 'required|id|unique:customers|min:1', ]; // (...) $validator = Validator::make($dataToSave, $rules); 在本地机器上,测试通过,一切正常。但在构建服务器(Bambol)上,没有安装数据库,PHPUnit会失败,因为它无法连接到数据库。当我删除unique:customers规
$rules = [
'customer_id' => 'required|id|unique:customers|min:1',
];
// (...)
$validator = Validator::make($dataToSave, $rules);
在本地机器上,测试通过,一切正常。但在构建服务器(Bambol)上,没有安装数据库,PHPUnit会失败,因为它无法连接到数据库。当我删除unique:customers
规则时,测试通过
我如何重构代码,使phpunit测试无论环境如何都能通过?使用规则u必须有DB连接。没有变体。
它检查该值在数据库中的行中是否唯一
在本地计算机上正常-因为您已连接。
远程不正常-因为您没有连接
只需在您的计算机上安装数据库和迁移。
否则,删除unique:customers |
将破坏您的应用程序逻辑
但是。如果
customers
customer\u id
定义为数据库表中的唯一键,则可以删除此unique:customers
,并在保存数据时捕获错误(如果未传递唯一值)是否在默认数据库中使用客户表?是的,在数据库中有表customers
。在本地机器上,测试通过,但在根本并没有数据库的构建服务器上,测试失败。测试不应该在每个环境中通过吗?如果没有数据库,如何unique:customers
验证通过?验证器不应该以某种方式重构/抽象到另一个类,这样我就可以在PHPunit中模拟验证器行为吗?验证器不应该以某种方式重构/抽象到另一个类,所以我可以在PHPunit中模拟验证器的行为?所以。。这里是\vendor\laravel\framework\src\illumb\Validation\Validator::validateUnique