Tôi đã có một đối tượng giả PHPUnit trả về 'return value'
bất kể đối số của nó là gì:
// From inside a test...
$mock = $this->getMock('myObject', 'methodToMock');
$mock->expects($this->any))
->method('methodToMock')
->will($this->returnValue('return value'));
Những gì tôi muốn có thể làm là trả về một giá trị khác dựa trên các đối số được truyền cho phương thức giả. Tôi đã thử một cái gì đó như:
$mock = $this->getMock('myObject', 'methodToMock');
// methodToMock('one')
$mock->expects($this->any))
->method('methodToMock')
->with($this->equalTo('one'))
->will($this->returnValue('method called with argument "one"'));
// methodToMock('two')
$mock->expects($this->any))
->method('methodToMock')
->with($this->equalTo('two'))
->will($this->returnValue('method called with argument "two"'));
Nhưng điều này khiến PHPUnit phàn nàn nếu giả lập không được gọi với đối số 'two'
, vì vậy tôi cho rằng định nghĩa methodToMock('two')
ghi đè định nghĩa đầu tiên.
Vì vậy, câu hỏi của tôi là: Có cách nào để có được một đối tượng giả PHPUnit để trả về một giá trị khác dựa trên các đối số của nó không? Và nếu vậy thì thế nào?