如果不调用所需的方法,Mockery / Etsy PHPExtensions不会失败测试

时间:2013-03-08 16:51:00

标签: php unit-testing tdd phpunit mockery

我有下面的代码,我希望在运行时失败,因为类DoesNothing不使用mock类或调用任何必需的方法。

<?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);
    }
}

但是当我运行它时,它会通过。我希望它能说“没有调用方法删除”等等。

可能有什么不对?与Mockery如何与PHPUnit谈话有关?

谢谢,  马丁

编辑: 我也提到我们正在使用Etsy's PHPExtensions将它集成到PHPUnit

1 个答案:

答案 0 :(得分:5)

您的方法名称应以test开头,否则PHPUnit不会将其确定为测试。

public function testSomethingIsCalled()

修改

你必须在你的拆解方法中调用Mockery::close()以期望执行。即。

/**
 * Tear down
 */
public function tearDown()
{
    \Mockery::close();
}