作者:左右印象摄影 | 来源:互联网 | 2023-05-24 13:51
1> Thomas Kelle..:
我有这个问题.它与该Laravel别名(如事实做Config::
,Log::
...)尚未在该时加载的@dataProvider
方法被调用.这里有两个我能想到的解决方案.
解决方案1
修改您的@dataProvider
不使用模型类.就我而言,我在@dataProvider方法中创建了模型对象,如下所示:
public function people() {
$person1 = new Person();
$person1->name = "me";
$person2 = new Person();
$person2->name = "you";
return [$person1, $person2];
}
由于该方法中Person
引用了类@dataProvider
,因此它将尝试加载该类.然后它会失败,因为Eloquent
Laravel尚未创建类别名.
为了解决这个问题,我可以返回数据,并在测试中创建实际的模型对象:
public function people() {
return ["me", "you"];
}
public function testPerson($name) {
$person = new Person();
$person->name = $name;
// Assertions...
}
在你的情况下,这意味着返回[['true']]
,而不是[[ExampleClass::TRUE]]
.
解决方案2
我认为没有令人信服的理由在Eloquent
这里使用类别名.事实上,我不知道为什么它存在(除了它"看起来"更好?).我把它带到了IRC频道,没有得到回复......所以如果有理由在这里使用别名,那我就不知道了.
也就是说,如果您的模型类扩展了底层\Illuminate\Database\Eloquent\Model
类而不是Eloquent
别名,那么您的测试将按原样开始工作.