拉拉维尔 5.6。嘲讽。属性上的模拟方法
Posted
技术标签:
【中文标题】拉拉维尔 5.6。嘲讽。属性上的模拟方法【英文标题】:Laravel 5.6. Mockery. Mock method on property 【发布时间】:2018-12-17 12:39:07 【问题描述】:目前我有类似的东西(简化版)
app(ShopifySDK::class)->Order->get($params)
如何模拟这个类并检查get()
方法输入?
这不起作用。
$this->app->bind(ShopifySDK::class, function ()
return Mockery::mock(ShopifySDK::class)
->shouldReceive('Order->get')
->once()
->with([
'status' => 'any',
'updated_at_min' => '2010-01-01T00:00:00+00:00',
'order' => 'updated_at asc',
'limit' => 250,
'page' => 1,
])->getMock();
);
并给出这样的错误
ErrorException : Undefined property: Mockery_1__demeter_d588e5bd79af839e05009e561399d4e0_Order::$Order
【问题讨论】:
【参考方案1】:解决方案非常简单
$this->app->bind(ShopifySDK::class, function () use ($apiResponse)
$mock = Mockery::mock(ShopifySDK::class)->makePartial();
$mock->Order = Mockery::mock(ShopifySDK::class)
->shouldReceive('get')
->with([
'status' => 'any',
'updated_at_min' => '2010-01-01T00:00:00+00:00',
'order' => 'updated_at asc',
'limit' => 250,
'page' => 1,
])->getMock();
return $mock;
);
【讨论】:
以上是关于拉拉维尔 5.6。嘲讽。属性上的模拟方法的主要内容,如果未能解决你的问题,请参考以下文章