【发布时间】:2015-11-26 07:40:05
【问题描述】:
使用 PHPUnit,有什么方法可以模拟一个方法并使其 表现得像身份 (x->x) ?大概是这样的:
$this->myMethod(Argument::any())->willReturn(<should return the argument untouched>)
【问题讨论】:
标签: php unit-testing testing phpunit
使用 PHPUnit,有什么方法可以模拟一个方法并使其 表现得像身份 (x->x) ?大概是这样的:
$this->myMethod(Argument::any())->willReturn(<should return the argument untouched>)
【问题讨论】:
标签: php unit-testing testing phpunit
您可以使用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'));
}
}
【讨论】: