У меня есть класс, который захотел бы издеваться позже в тесте:Как мне сказать, что при определенных обстоятельствах вызывать оригинальный метод?
class Original {
function calculate($a) { ... }
}
в тесте:
$mock = $this->getMock('Original',['calculate']);
$mock->expcets($this->any())
->will($this->returnValueMap([
[1,'ABC'],
[2,'BCD']
// somehow tell $mock to call the original calculate() here
);
Я хочу сказать $mock
упасть обратно к исходному calculate()
при определенных условиях, пример, если аргументы не соответствуют ни одному из предоставленных проверок. Как я понимаю, из чтения кода PhpUnit invoker просто возвращает null, если совпадение не найдено: -?
Одна мантра для письменных тестов - это то, что вы позаботитесь, чтобы они были простыми. Сложный сценарий, который вы пытаетесь достичь, не выглядит так, как я бы сказал. Просто говоря, использование PHPUnit mocks/stubs для этого, вероятно, является неправильным инструментом, и вместо этого вы должны написать свой собственный заглушка для тестирования для этого класса. – hakre