我试图让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();
}