Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel验证器-连接到数据库_Php_Validation_Unit Testing_Laravel_Phpunit - Fatal编程技术网

Php 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规

我在Laravel的验证规则中有一个数据库限制:

$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