Издевательства заказывали издевательства

Итак, в основном я пытаюсь издеваться над своими зависимостями от контроллера, и я хочу использовать функцию ordered() Mockery.

    $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() в контроллере. Более того, если я изменю порядок макетов, я все равно пройду успешный тест.

    $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();

Любая идея, что я делаю неправильно здесь? Спасибо


person lost in binary    schedule 03.09.2014    source источник


Ответы (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();

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

https://github.com/padraic/mockery/blob/master/docs/06-EXPECTATION%20DECLARATIONS.md

person gontrollez    schedule 03.09.2014
comment
Объявляет, что этот метод должен вызываться в определенном порядке по отношению к методам с аналогичной маркировкой. Таким образом, они имеют в виду методы одного и того же издевательского объекта. Спасибо! - person lost in binary; 03.09.2014