10 Kasım 2008, PAZARTESİ
Nasıl differernt değerleri bir parametreye dönmek için PHPUnit MockObjects alabilir miyim?
Verir "" ne olursa olsun, kendi bağımsız değişkenler: . dönüş değeri PHPUnit sahte bir nesne var
// From inside a test...
$mock = $this->getMock('myObject', 'methodToMock');
$mock->expects($this->any))
->method('methodToMock')
->will($this->returnValue('return value'));
Yapmak istediğim şey, bağımsız alay yönteme geçirildi dayalı farklı bir değer döndürür. Gibi bir şey denedim:
$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"'));
Ama bu PHPUnit eğer alay "" ben varsayalım methodToMock tanımı('iki') ilk tanımı üzerine yazar. iki değişken adı değil diye şikayet etmek neden olur
Benim sorum ise şu: farklı bir değer argümanlar dayalı dönmek için PHPUnit sahte bir nesne almak için herhangi bir yolu var mı? Ve eğer öyleyse, nasıl?
Şimdiden teşekkürler!
CEVAP
15 Kasım 2008, CUMARTESİ
Bir geri arama kullanmak. örneğin (düz PHPUnit belgelerine):
<?php
class StubTest extends PHPUnit_Framework_TestCase
{
public function testReturnCallbackStub()
{
$stub = $this->getMock(
'SomeClass', array('doSomething')
);
$stub->expects($this->any())
->method('doSomething')
->will($this->returnCallback('callback'));
// $stub->doSomething() returns callback(...)
}
}
function callback() {
$args = func_get_args();
// ...
}
?>
Geri istediğini yap() ve uygun olarak besten $dayanan dönüş.
Bunu Paylaş:
Nasıl bir dize dönüştürmek için yığın ...
Nasıl, asenkron yerine senkron AJAX is...
Nasıl haftanın başlangıç için DateTime...
Nasıl görüntüler için yakınlaştırma iş...
Nasıl Nakavt veri bağlamak için JS-oda...