1

DoesNothingクラスがモッククラスを使用しないか、必要なメソッドを呼び出さないため、実行すると失敗すると予想される以下のコードがあります。

<?php
class DoesNothing
{

}

class DoesNothingTest extends YourMockeryTestCase
{
    /**
     * @test
     */
    public function somethingIsCalled()
    {
        $this->mock = Mockery::mock();

        $keys = array(
            '1234',
            'abcxyz',
            '*&(%&^$-*/~@:{}',
            ')*&GA^FAUIB(*',
            '',
            ' ',
        );

        foreach ($keys as $key) {
            $this->mock
                ->shouldReceive('remove')
                ->atLeast()->times(1)
                ->with($key);
        }
        $var = new DoesNothing($this->mock);
    }
}

しかし、実行すると合格します。「メソッド remove は呼び出されませんでした」などと言うと思います。

何が間違っている可能性がありますか?Mockery が PHPUnit に話しかける方法と何か関係がありますか?

ありがとう、マーティン

編集: Etsy の PHPExtensionsを使用して PHPUnit に統合していることにも言及する必要があります。

4

1 に答える 1

5

メソッド名は で始まる必要がtestあります。そうしないと、PHPUnit はそれをテストと判断しません。

public function testSomethingIsCalled()

編集

Mockery::close()期待を実行するには、ティアダウン メソッドを呼び出す必要があります。すなわち

/**
 * Tear down
 */
public function tearDown()
{
    \Mockery::close();
}
于 2013-03-08T20:50:05.400 に答える