我在Laravel的验证规则中有数据库限制:
$rules = [
'customer_id' => 'required|id|unique:customers|min:1',
];
// (...)
$validator = Validator::make($dataToSave, $rules);
在本地机器上,测试通过,一切都很好。但是在构建服务器(Bamboo)上,没有安装数据库,PHPUnit失败,因为它无法连接到数据库。当我删除unique:customers
规则时,测试通过。
如何重构代码,因此无论环境如何,phpunit测试都会通过?
答案 0 :(得分:1)
使用unique规则你必须有数据库连接。没有变种。 它检查数据库中行之间的值是否唯一。
在本地计算机上确定 - 因为你有连接。 在远程NOT OK - 因为你没有连接。
只需在您的Bamboo上安装数据库和迁移。
否则,删除unique:customers|
将破坏您的应用程序逻辑。
BUT。如果customers
。customer_id
被定义为数据库表中的唯一键,则可以在保存数据时删除此unique:customers|
并捕获错误(如果未传递唯一值)