2016-06-23 2 views
0

Я использую Mockery для тестирования класса, который создает события календаря. Он передает отметки времени начала и окончания моего метода EventEventRepository. В качестве аргументов есть другие данные, но мне все равно, что временные метки верны для этого теста.Проверка аргументов mockery с использованием Mockery :: contains()

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

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

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

ответ

1

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

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

$this->repo->shouldReceive('create')->once() 
      ->with(Mockery::contains(1466460000, 1466467200)); 
$this->repo->shouldReceive('create')->once() 
      ->with(Mockery::contains(1466632800, 1466640000)); 
Смежные вопросы