Рассмотрим
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 );
}
}