我正试图用嘲弄的方法在我的laravel项目中测试一个类的方法
但是,当我尝试测试phpunit时,我的接口类(在我需要测试的方法中使用)是不可实例化的。
怎么了?
我的考试班
class HelperRSTest extends TestCase {
public function tearDown()
{
Mockery::close();
}
public function test_mockery()
{
// $mock = Mockery::mock('HelperRS');
// $mock->shouldReceive('getRecibosLocacao')->once()->andReturn('mocked');
$result = HelperRS::getRecibosLocacao(1228);
var_dump($result);
}
}
我要测试的目标类
class HelperRS extends \BaseController {
public static function getRecibosLocacao($id_locacao){
$pagamentos = App::make('PagamentoRepositoryInterface');
$locacao = Locacao::find($id_locacao);
$pagamento = $pagamentos->getByVendaByTipo($locacao->cod_locacao, 'l');
dd($pagamento);
}
}
错误:
1) HelperRSTest::test_mockery
Illuminate\Container\BindingResolutionException: Target [PagamentoRepositoryInterface] is not instantiable.
答案 0 :(得分:0)
您在HelperRS上调用的方法是一个静态方法,而您正在创建该类的模拟实例,而不是实际对其执行任何操作。您可以通过嘲弄来实现这一点,但不建议这样做,并且需要您在进程隔离中运行测试。
$mock = Mockery::mock('alias:HelperRS');
$mock->shouldReceive('getRecibosLocacao')->once()->andReturn('mocked');