Mockery shouldReceive () -> once (), похоже, не работает

Я пытаюсь заставить 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() чтобы выполнить проверки для ваших ожиданий. Он также обрабатывает очистку контейнера для издевательств для следующего теста.

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

    Чтобы избежать вызова метода close в каждом тестовом классе, вы можете просто добавить TestListener в свою конфигурацию phpunit следующим образом:

     <listeners> <listener class="\Mockery\Adapter\Phpunit\TestListener"></listener> </listeners> 

    Этот подход объясняется в документах .

    Одно из примечаний из связанных документов:

    Убедитесь, что автозагрузчик Composer или Mockery присутствует в файле начальной загрузки, или вам нужно будет также определить атрибут «file», указывающий на файл вышеуказанного класса TestListener.