【发布时间】:2021-09-16 13:06:24
【问题描述】:
我正在对一个对象上的多个字段执行验证测试,每个字段都有多个验证规则(required、integer、unique 等)。我没有为每个field 和rule 编写测试函数,而是将data provider 提供给generic 测试函数。
data provider 的人为示例:
public function validationErrorsProvider()
{
return [
[ 'field', 'input', 'error message' ],
[ 'field', 'input', 'error message' ],
[ 'field', 'input', 'error message' ],
];
}
然后,data provider 被通用测试方法使用,该方法断言对于 field 和 input,它会看到 error message。
/**
* @test
* @dataProvider validationErrorsProvider
*/
public function will_fail_with_errors_when_input_is_invalid($field, $input, $error)
{
// do some stuff
}
这很好用,但是随着我添加更多要测试的字段和规则(validationErrorsProvider 数组中的 20 - 30 个元素),data provider 变得越来越大。它似乎比我的一些测试更复杂。
这只是发生的事情,还是有替代方案?我考虑将data provider 拆分为多个providers,每个都只包含给定field 的数据。除了使data provider 看起来更小之外,这不会做任何事情。
【问题讨论】: