无法模拟 Laravel 模型方法
Posted
技术标签:
【中文标题】无法模拟 Laravel 模型方法【英文标题】:Not able to mock Laravel Model method 【发布时间】:2020-09-11 08:41:28 【问题描述】:我目前正在编写一个测试来测试模型方法。
我的模型Store
有这个方法:
public function hourTemplate()
return $this->belongsTo(HourTemplate::class);
我在 setUp 方法中也对这段代码进行了测试:
public function setUp() : void
parent::setUp();
$this->storeMock = Mockery::mock(StoreModel::class)->makePartial();
app()->instance(StoreModel::class, $this->storeMock);
而测试方法是这样的:
public function test_getStoreHoursArray_when_hour_isNull()
$this->storeMock->shouldReceive('hourTemplate')->andReturn(new HourTemplate());
dump((new StoreModel())->hourTemplate);
但是返回值为null。
【问题讨论】:
【参考方案1】:您应该从容器中检索模拟实例
$mockedModel = app()->make(StoreModel::class);
【讨论】:
以上是关于无法模拟 Laravel 模型方法的主要内容,如果未能解决你的问题,请参考以下文章