3

テストで使用しているモッククラスがあり、1 つのメソッドが正確に 2 回呼び出され、呼び出しごとに異なる引数が使用されることを同時に保証する方法を探しています。私のコードは次のようなものです:

$mocked->expects($this->at(0))->method('mockedMethod')->with($this->equalsTo(123);
$mocked->expects($this->at(1))->method('mockedMethod')->with($this->equalsTo(456);

引数に関係なく、mockedMethod に対して 3 回目の呼び出しが行われた場合は、アサーションの失敗が必要です。

4

2 に答える 2

5

私はパーティーに遅れていますが、これが探している人の助けになることを願っています. はい、at() と exact() を組み合わせることができます。あなたの例では、次のようになります。

$mocked->expects($this->at(0))->method('mockedMethod')->with($this->equalsTo(123);
$mocked->expects($this->at(1))->method('mockedMethod')->with($this->equalsTo(456);
$mocked->expects($this->exactly(2))->method('mockedMethod');
于 2014-04-21T19:23:55.403 に答える
-3
<?php
require_once 'SomeClass.php';

class StubTest extends PHPUnit_Framework_TestCase
{
    public function testReturnArgumentStub()
    {
        // Create a stub for the SomeClass class.
        $stub = $this->getMock('SomeClass');

        // Configure the stub.
        $stub->expects($this->any())
             ->method('doSomething')
             ->will($this->returnArgument(0));

        // $stub->doSomething('foo') returns 'foo'
        $this->assertEquals('foo', $stub->doSomething('foo'));

        // $stub->doSomething('bar') returns 'bar'
        $this->assertEquals('bar', $stub->doSomething('bar'));
    }
}
?>
于 2012-12-29T00:41:14.930 に答える