繁体   English   中英

使用嘲笑Laravel进行错误测试

[英]Error make test with mockery laravel

我试图用嘲笑来测试我的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.

您在HelperRS上调用的方法是静态方法,而您正在创建该类的模拟实例,而实际上并未对其进行任何操作。 您可以通过嘲笑来实现此目的,尽管不建议这样做,并且将要求您在进程隔离中运行测试。

$mock = Mockery::mock('alias:HelperRS');
$mock->shouldReceive('getRecibosLocacao')->once()->andReturn('mocked');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM