Проверка аргументов Mockery с помощью Mockery::contains()

Я использую Mockery для тестирования класса, который создает события календаря. Он передает временные метки даты начала и окончания в метод create() моего EventRepository. Есть и другие данные, включенные в качестве аргументов, но меня волнует только правильность временных меток для этого теста.

Этот код отлично подходит для тестирования создания одного события:

$this->repo->shouldReceive('create')->once()
           ->with(Mockery::contains(1466460000, 1466467200));

Однако, когда я расширяю Mock до метода create(), который вызывается дважды, он терпит неудачу.

$this->repo->shouldReceive('create')->twice()
           ->with(Mockery::contains(1466460000, 1466467200),
                 Mockery::contains(1466632800, 1466640000));

Разве Mockery не использует синтаксис ->with(args1, args2) для указания аргументов для нескольких вызовов одной и той же функции?


person dargue3    schedule 23.06.2016    source источник


Ответы (1)


Синтаксис с несколькими аргументами используется, когда тестируемый метод имеет несколько аргументов.

Для вашего варианта использования вам нужно сделать следующее:

$this->repo->shouldReceive('create')->once()
          ->with(Mockery::contains(1466460000, 1466467200));
$this->repo->shouldReceive('create')->once()
          ->with(Mockery::contains(1466632800, 1466640000));
person Bram Gerritsen    schedule 25.06.2016