Как утверждать аргументы объекта вызова функции фиктивного объекта

Рассмотрим

class Foo {
    public $att;
    public function __construct ( $a ) { $this->att = $a; }
}

class Some {
    public function callMe ( Foo $f ) {}
}

// class I want to test
class SuT {
    public function testMe ( Some $s ) {
        echo $s->callMe( new Foo('hi') );
    }
}

Я хочу проверить, правильно ли Sut :: testMe () вызывает Some :: callMe () . Поскольку параметр является объектом ( Foo ) (не скалярным типом), я не могу понять, как вызвать PHPUnit with () для выполнения на нем утверждений. Например, существует метод assertAttributeEquals , но как мне передать ему аргумент вызова?

Я бы хотел сделать следующее:

class SuTTest extends PHPUnit_Framework_TestCase {
    public function testSuT () {
        $stub = $this->getMock( 'Some' );
        $stub->expects( $this->once() )->method( 'callMe' )
            ->with( $this->assertAttributeEquals('hi', 'att', $this->argument(0) );

        /*
         * Will $stub->callMe be called with a Foo object whose $att is 'hi'?
         */
        $sut = new SuT();
        $sut->testMe( $stub );
    }
}
11
задан JayVee 23 May 2011 в 09:21
поделиться