Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Mocky laravel进行错误测试_Php_Unit Testing_Laravel_Mocking - Fatal编程技术网

Php 使用Mocky laravel进行错误测试

Php 使用Mocky laravel进行错误测试,php,unit-testing,laravel,mocking,Php,Unit Testing,Laravel,Mocking,我正在用mocky测试我的laravel项目中的一个类的方法。 但是,当我尝试测试phpunit时,它表示my接口类(在我需要测试的方法中使用)不可实例化。 怎么了 我的测试班 class HelperRSTest extends TestCase { public function tearDown() { Mockery::close(); } public function test_mockery() { // $m

我正在用mocky测试我的laravel项目中的一个类的方法。
但是,当我尝试测试phpunit时,它表示my接口类(在我需要测试的方法中使用)不可实例化。
怎么了

我的测试班

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上调用的方法是一个静态方法,而您创建的是该类的模拟实例,实际上并没有对其执行任何操作。您可以通过mockry来实现这一点,但不推荐使用mockry,它需要您在流程隔离中运行测试

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

我不熟悉单元测试。如何在一个独立的进程中运行测试?我真的可以测试静态方法吗?这个过程“mockry::mock('something')”,我总是需要在开始测试之前这样做吗?无法在运行时执行此操作?@RafaelSoufraz使用\@RunInsepareprocess注释运行带有进程隔离的测试,在测试期间调用Mockery::mock应该可以