我试图让Mockery断言给定方法至少被调用一次。

我的测试课是:

use \Mockery as m;

class MyTest extends \PHPUnit_Framework_TestCase
{

    public function testSetUriIsCalled()
    {
        $uri = 'http://localhost';
        $httpClient = m::mock('Zend\Http\Client');
        $httpClient->shouldReceive('setUri')->with($uri)->atLeast()->once();
    }

}

如您所见,有一个测试(希望)创建了一个预期将调用setUri的测试。由于没有涉及任何其他代码,所以我无法想象可以调用它,但是我的测试通过了。谁能解释为什么?

最佳答案

您需要调用Mockery:close()来运行验证以达到您的期望。它还处理下一个测试用例的 mock 容器的清理。

public function tearDown()
{
    parent::tearDown();
    m::close();
}

09-30 18:29