我必须遗漏一些内容,但我遵循了本教程:http://www.phpunit.de/manual/current/en/test-doubles.html
<?php
class SomeClass
{
public function doSomething()
{
// Do something.
return 'bar';
}
}
?>
我的StubTest课程
class StubTest extends PHPUnit_Framework_TestCase
{
public function testStub()
{
// Create a stub for the SomeClass class.
$stub = $this->getMock('SomeClass');
// Configure the stub.
$stub->expects($this->any())
->method('doSomething')
->will($this->returnValue('foo'));
// Calling $stub->doSomething() will now return
$this->assertEquals('foo', $stub->doSomething());
}
}
?>
好吧也许我错过了一些东西,但是不是调用doSomething的预期值是吧?
如果我$this->assertEquals('bar', $stub->doSomething());
,它将会失败。
它似乎是->will($this->returnValue('foo'));
答案 0 :(得分:3)
你的考试应该通过。主代码将返回'bar',但您没有调用主代码。你嘲笑对象返回'foo'。因此,它应该返回'foo',这是你的测试所显示的。
要使用模拟模拟代码的相同返回,您将执行以下操作:
$stub = $this->getMock('SomeClass');
// Configure the stub.
$stub->expects($this->any())
->method('doSomething')
->will($this->returnValue('bar'));
// Calling $stub->doSomething() will now return
$this->assertEquals('bar', $stub->doSomething());
这将使您的测试继续进行,就好像您调用了真实函数并收到'bar'作为返回。