我有两个班,a类,b类。在类a中,我有从类b调用方法的方法。例如:
function functionInClassB($state)
{
if ($state) {
return true;
} else {
return false;
}
}
function functionInClassA ()
{
if (functionInClassB(1)) {
return "Anything";
}
}
现在,我想用PhpUnit测试functionclasassb,我不想让functionclasassb运行。我想要我想要的返回值。对不起,我的英语不好,请帮忙!!
老问题,但我想你指的是存根/嘲弄。
是否容易/明智取决于。如果你想静态地调用functionInClassB ,那么你就不走运了;静态内容不适合测试。但是如果你在实例上调用该方法,那么下面的代码应该可以工作:
class A {
protected $instanceOfB;
public function functionInClassA(B $injectedInstanceOfB) {
if ($injectedInstanceOfB->functionInClassB(1)) return 'anything';
}
}
class B {
public function functionInClassB($state) {
if ($state) {
return true;
} else {
return false;
}
}
}
class yourPHPUnitTest extends 'PHPUnit'Framework'TestCase {
public function testA() {
$stubOfB = $this->createStub('B::class);
// Optionally...
$stubOfB->method('functionInClassB')->willReturn('something');
// Thing you want to test
$a = new A();
$result = $a->functionInClassA($stubOfB);
$this->assertEqual('something', $result);
}
}