下面代码中的闭包使得这段代码很难测试。我怎样才能继续急切加载这些项目并保持完整的可测试性?
public function scopeWithCompanyPreferences(Builder $builder)
{
return $builder->with([
'companies' => function ($query) {
$query->with('companies');
$query->with('preference_settings');
$query->with('parent_company');
}
]);
}
我已经看到使用 Mockery 使用
Mockery::on()
,但我认为鉴于数组没有用。
最佳答案
如果你在 mock with
方法,你应该可以使用 Mockery::on()
像这样:
$b = \Mockery::mock("your_builder_class");
$b->shouldReceive("with")
->with(\Mockery::on(function($x){
// test $x any way you like, for example...
// ...a simple check to see if $x["companies"] is a function
return is_callable($x["companies"]);
}))
->once()
->andReturn("hello!");
关于php - 在 Laravel 中对闭包进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22770843/