我试着这样做:
$this->dsMock = Mockery::mock('Eloquent', 'API\V1\DataSet');
$this->app->instance('API\V1\DataSet', $this->dsMock);
$this->dsMock->shouldReceive('isLocalData')->once()->andReturn(true);然后,在被测类内部:
$test = DataSet::isLocalData($dataSetId);但是,DataSet类并没有被模仿。它还在尝试访问数据库。为什么?
发布于 2015-04-19 08:46:13
可能的问题是Laravel不幸地使用了Façade's (也是工厂)。如果DataSet已经使用Façade实例化了,它将一直返回相同的类,你不会得到一个模拟的版本。
我不记得你是否可以在不使用Laravel的Façade的情况下实例化你的类。您必须记住,当您在应用程序中静态调用DataSet时,您实际上引用的不是API\V1\DataSet,而是管理它的其他东西。
https://stackoverflow.com/questions/29687176
复制相似问题