Я использую Codeception для тестирования моего приложения PHP, и есть метод, который я не знаю, как использовать. Это называется Stub::atLeastOnce()
и, как Документация Codeception класса Stub говорит:
«Проверяет, был ли метод вызван хотя бы один раз. Если количество вызовов равно 0, оно выдаст исключение при проверке».
Но когда я пытаюсь его использовать, не важно, что я комментирую призыв к User::getName()
или нет, тест проходит.
Мой пользовательский класс выглядит так:
<?php
class User {
public function getName() {
return 'pepito';
}
public function someMethod() {
}
}
И мой метод испытаний, как это:
public function testStubUsage() {
// all methods that the stub impersonates must be, at least, defined
$user = Stub::make('User', array('getName' => Stub::atLeastOnce(function() { return 'Davert'; }), 'someMethod' => Stub::atLeastOnce('User::getName')));
$user->getName();
}
Итак, как использовать эту функцию, чтобы сделать тест неудачным, если User::getname()
никогда не называется?
Документ не правильный, вы должны пройти $this
в качестве третьего аргумента Stub::make()
чтобы это работало правильно:
public function testStubUsage() {
$user = Stub::make('User', array('getName' => Stub::atLeastOnce(function() { return 'Davert';}), 'someMethod' => function() {}), $this); // <- Here
$user->getName();
}
Других решений пока нет …