2014-09-03 184 views
1

所以基本上我试图嘲笑我的依赖关系在控制器上,我想使用Mockery的ordered()功能。嘲讽命令嘲笑

$request = \Mockery::mock('Silhouette\Http\Request'); 
    $response = \Mockery::mock('Silhouette\Http\Response'); 
    $response->shouldReceive("setContent")->ordered(); 

    $db = \Mockery::mock('Dabble\Database'); 

    $configData = \Mockery::mock('Silhouette\Configuration\ConfigurationData'); 
    $configData->shouldReceive("get")->andReturn(array(18, 23))->ordered(); 

上述测试是成功的,即使所述$configData->get()被在控制器$response->setContent()之前调用。 此外,如果我扭转嘲笑的顺序,我仍然geta成功的测试。

$request = \Mockery::mock('Silhouette\Http\Request'); 

    $db = \Mockery::mock('Dabble\Database'); 

    $configData = \Mockery::mock('Silhouette\Configuration\ConfigurationData'); 
    $configData->shouldReceive("get")->andReturn(array(18, 23))->ordered(); 

    $response = \Mockery::mock('Silhouette\Http\Response'); 
    $response->shouldReceive("setContent")->ordered(); 

任何想法我在做什么错在这里?谢谢

回答

1

问题是订单仅适用于相同的模拟,除非您使用globally()方法使订单工作与不同的模拟。

尝试

$request = \Mockery::mock('Silhouette\Http\Request'); 
$response = \Mockery::mock('Silhouette\Http\Response'); 
$response->shouldReceive("setContent")->globally()->ordered(); 

$db = \Mockery::mock('Dabble\Database'); 

$configData = \Mockery::mock('Silhouette\Configuration\ConfigurationData'); 
$configData->shouldReceive("get")->andReturn(array(18, 23))->globally()->ordered(); 

这是在文档解释说:

http://docs.mockery.io/en/latest/reference/expectations.html

+0

声明,这种方法有望在相对于类似的标记方法以特定的顺序被调用。 所以它们表示同一个模拟对象的方法。谢谢! – 2014-09-03 14:16:36