我正在使用代码来测试我的PHP应用程序,并且有一种我不知道如何使用的方法。它被称为Stub::atLeastOnce()
,就像Codeception's documentation of the Stub class所说:
“检查方法是否至少被调用过一次。如果调用次数为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()
,该函数的用途是什么使测试失败?
答案 0 :(得分:4)
文档不正确,您必须将$this
作为Stub::make()
的第三个参数传递才能使其正常工作:
public function testStubUsage() {
$user = Stub::make('User', array('getName' => Stub::atLeastOnce(function() { return 'Davert';}), 'someMethod' => function() {}), $this); // <- Here
$user->getName();
}