69

これは私が持っているものです:

$observer = $this->getMock('SomeObserverClass', array('method'));
$observer->expects($this->once())
         ->method('method')
         ->with($this->equalTo($arg1));

ただし、メソッドは 2 つのパラメーターを取る必要があります。最初のパラメーターが ($arg1 として) 正しく渡されていることのみをテストしています。

2 番目のパラメーターをテストするにはどうすればよいですか?

4

1 に答える 1

110

これを行う方法は次のとおりだと思います。

$observer->expects($this->once())
     ->method('method')
     ->with($this->equalTo($arg1),$this->equalTo($arg2));

または

$observer->expects($this->once())
     ->method('method')
     ->with($arg1, $arg2);

2 番目の引数で別のタイプのアサーションを実行する必要がある場合は、それも実行できます。

$observer->expects($this->once())
     ->method('method')
     ->with($this->equalTo($arg1),$this->stringContains('some_string'));

いくつかの引数が複数のアサーションを確実に渡す必要がある場合は、logicalAnd() を使用します。

$observer->expects($this->once())
     ->method('method')
     ->with($this->logicalAnd($this->stringContains('a'), $this->stringContains('b')));
于 2008-12-08T21:16:05.213 に答える