मुझे एक PHPUnit नकली वस्तु मिली 'return value'
है जो इसके तर्क से कोई फर्क नहीं पड़ता:
// From inside a test...
$mock = $this->getMock('myObject', 'methodToMock');
$mock->expects($this->any))
->method('methodToMock')
->will($this->returnValue('return value'));
मैं जो करने में सक्षम होना चाहता हूं, वह मॉक विधि को पारित किए गए तर्कों के आधार पर एक अलग मूल्य वापस करना है। मैंने कुछ इस तरह की कोशिश की है:
$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"'));
लेकिन यह PHPUnit को शिकायत करने का कारण बनता है यदि मॉक को तर्क के साथ नहीं बुलाया जाता है 'two'
, तो मैं मानता हूं कि परिभाषा पहले की परिभाषा को methodToMock('two')
ओवरराइट करती है।
तो मेरा सवाल यह है कि क्या इसके तर्कों के आधार पर PHPUnit नकली वस्तु प्राप्त करने का कोई तरीका है? और यदि हां, तो कैसे?