SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011
  • SegaAmerica

    SegaAmerica

    5 Mart 2008
  • Shantanu Sood

    Shantanu Soo

    3 Kasım 2008