Tôi đã có một PHPUnit mock object trả về 'return value'
không có vấn đề gì đối số của nó:Làm thế nào tôi có thể nhận được PHPUnit MockObjects để trả về các giá trị khác nhau dựa trên một tham số?
// 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ả lại một giá trị khác nhau dựa trên những lập luận 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 gây ra PHPUnit để phàn nàn nếu giả không được gọi với đối số 'two'
, vì vậy tôi cho rằng định nghĩa của methodToMock('two')
ghi đè định nghĩa những người đầu tiên.
Vì vậy, câu hỏi của tôi là: Có cách nào để lấy đối tượng giả lập 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, làm thế nào?
Bạn có thể cung cấp liên kết tới tài liệu không? Tôi dường như không thể tìm thấy nó bằng "Google" –
http://www.phpunit.de/manual/3.6/en/test-doubles.html#test-doubles.stubs – Steve
Lưu ý rằng bạn có thể sử dụng một phương pháp làm gọi lại bằng cách truyền mảng, ví dụ '$ this-> returnCallback (mảng ('MyClassTest', 'myCallback'))'. –