Предположим, вы хотите протестировать класс Bar, который зависит от класса Foo:
/**
* This is the Dependency class
*/
class Foo
{
public function fooAction()
{
return 'foo action';
}
}
/*
* This is the class you want to test, which depends on Foo
*/
class Bar
{
private $foo;
public function __construct(Foo $foo)
{
$this->foo = $foo;
}
public function barAction()
{
return $this->foo->fooAction();
}
}
Теперь, когда вы тестируете Bar, вы скажете, что при запуске barAction()
вы ожидаете, что fooAction()
вызывается и возвращает фиктивный результат:
$fooMock = Mockery::mock(Foo::class);
$barTest = new Bar($fooMock);
$fooMock->shouldReceive('fooAction')->andReturn('mockReturn');
$result = $barTest->barAction();
$this->assertEquals('mockReturn', $result);
В примере я передал объект Foo на уровне конструктора, но работает так же, если вы передадите его на уровне функции
Я надеюсь, что этопомогает!