У меня есть класс с двумя общедоступными методами. Это выглядит примерно так:
class IntRequest
{
public function updateStatus()
{
$isValid = $this->checkValidity();
// ... next is a complex logic that use $isValid
}
/**
* @return bool
*/
public function isValid()
{
// another complex logic
}
}
Мне нужно протестировать первую функцию - IntRequesr::updateStatus
; однако мне нужно бежать к тестам. Первый с IntRequests::isValid
возвращает false
, а второй с true
в результате IntRequests::isValid
Я пытаюсь издеваться над этой функцией, но тесты выполняются с вызовом фактического IntRequests::isValid
, а не издевательского.
Мой тестовый код
$intRequest = new IntRequests;
$mock = m::mock($intRequest);
$mock->shouldReceive('isValid')
->once()
->andReturn(true);
$res = $mock->updateStatus();
$this->assertTrue($res);
Я пытался позвонить $res = $intRequest->updateStatus()
вместо $res = $mock->updateStatus()
, но безуспешно.
Итак, мне интересно, можно ли издеваться над функцией, которая вызывается внутри метода тестирования?