Php 使用Mocky laravel进行错误测试
我正在用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
但是,当我尝试测试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应该可以