Ошибка сделать тест с издевательством 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.

0

Решение

Метод, который вы вызываете в HelperRS, является статическим методом, тогда как вы создаете макетированный экземпляр этого класса и фактически ничего не делаете с ним. Вы можете добиться этого с помощью насмешек, хотя это не рекомендуется и потребует от вас выполнения теста в изоляции процесса.

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]