Как правильно использовать метод atLeastOnce в Codeception \ Util \ Stub?

Я использую 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() никогда не называется?

2

Решение

Документ не правильный, вы должны пройти $this в качестве третьего аргумента Stub::make() чтобы это работало правильно:

public function testStubUsage() {
$user = Stub::make('User', array('getName' => Stub::atLeastOnce(function() { return 'Davert';}), 'someMethod' => function() {}), $this); // <- Here
$user->getName();
}
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]