2017-11-21 11 views
0

특정 인수에 대해 true을 반환하고 다른 인수에 대해서는 false을 반환하는 메서드로 Mock을 만들고 싶습니다.Mockery에서 특정 인수에 대한 반환 값 기대를 지정하는 가장 짧은 방법

나는 이것을 달성 할 수

$this->myMock = Mockery::mock(MyClass::class); 
$this->myMock->shouldReceive('myMethod')->with('my-argument')->andReturn(true); 
$this->myMock->shouldReceive('myMethod')->andReturn(false); 

하지만 거기에 내가 많은 모의 객체에 대해이 작업을 수행해야합니다,이를 지정할 수있는 짧은 방법, 그리고 많은 코드에 대한처럼 보이는 경우 궁금 해서요 이 간단한 목적 (내 속성/클래스/메소드/인수 이름은이 예제보다 상당히 길다).

답변

0

:처럼 작동해야이 true 또는 false이 인수에 따라 반환합니다 실제 개체에 myMethod()에 전화를 연기한다

$this->myMock = Mockery::mock(MyClass::class); 
$this->myMock->shouldReceive('myMethod')->passthru(); 

-이 분명히 아무튼 질문에있는 코드가하는 것과 똑같은 일을하지만, 그것은 내 시나리오에서 작동하며 매우 짧습니다.

1

Mockery의 andReturnUsing -method를 사용할 수 있습니다. 제공된 인수를 평가하여 반환 값을 계산하려면 종료가 필요합니다. 내가 사용할 수 있습니다 발견

$this->mock 
    ->shouldReceive('myMethod') 
    ->andReturnUsing(function ($argument) { 
     if ($argument) { 
      return true; 
     } 

     return false; 
    });