Mar*_*ier 5 php testing phpunit unit-testing
使用 PHPUnit,有没有办法模拟一个方法并使其表现得像identity (x->x) ?围绕以下内容:
$this->myMethod(Argument::any())->willReturn(<should return the argument untouched>)
Run Code Online (Sandbox Code Playgroud)
您可以使用该returnArgument() 方法。来自文档:
有时,您希望返回方法调用的参数之一(未更改)作为存根方法调用的结果。例 9.4 展示了如何使用
returnArgument()代替 来 实现这一点returnValue()。
例如:
class StubTest extends PHPUnit_Framework_TestCase
{
public function testReturnArgumentStub()
{
// Create a stub for the SomeClass class.
$stub = $this->getMockBuilder('SomeClass')
->getMock();
// Configure the stub.
$stub->method('doSomething')
->will($this->returnArgument(0));
// $stub->doSomething('foo') returns 'foo'
$this->assertEquals('foo', $stub->doSomething('foo'));
// $stub->doSomething('bar') returns 'bar'
$this->assertEquals('bar', $stub->doSomething('bar'));
}
}
Run Code Online (Sandbox Code Playgroud)