假设我有 RuleFactory 的这种方法:
public function makeFromArray($rules)
{
$array = [];
foreach ($rules as $rule) {
$array[] = new Rule($rule[0], $rule[1]);
}
return $array;
}
我想测试返回数组是否包含 Rule 元素。这是我的测试:
function it_should_create_multiple_rules_at_once()
{
$rules = [
['required', 'Please provide your first name'],
['alpha', 'Please provide a valid first name']
];
$this->makeFromArray($rules)->shouldHaveCount(2);
$this->makeFromArray($rules)[0]->shouldBeInstanceOf('Rule');
$this->makeFromArray($rules)[1]->shouldBeInstanceOf('Rule');
}
但这不起作用,它会在 PHPSpec 中引发错误。
奇怪的是,我可以在其他返回数组的方法上很好地做到这一点,但由于某种原因,我不能在这里做到这一点。
我得到的错误是这样的:
! it should create multiple rules at once
method [array:2] not found
如何在不创建自己的内联匹配器的情况下测试此返回数组的内容?