2015-01-06 1 views
0

나는 그러나 var_dump(Confide::user()->id);는 항상 내가 1로 설정된 두 번째는 1를 반환해야하더라도 (42)을 반환 Laravel을 사용하고Facade mock이 우선 무시되지 않고 두 번 호출 되었습니까?

Confide::shouldReceive('user')->atLeast(1)->andReturn((object) array('id' => 42)); 
var_dump(Confide::user()->id); // returns int(42) 
Confide::shouldReceive('user')->atLeast(1)->andReturn((object) array('id' => 1)); 
var_dump(Confide::user()->id); // returns int(42) but should be int(1) 

같은 외관 객체를 조롱하고있다.

내가 뭘 잘못하고 있니?

답변

1
Confide::shouldReceive('user')->atLeast(1)->andReturn(
    (object) array('id' => 42), 
    (object) array('id' => 1) 
); 

따라서 적어도 한 번 실행해야합니다.

첫 번째 호출은 id = 42 인 객체를 반환하고 둘째 이후는 id = 1 인 객체를 반환합니다.

PS : 나는 조롱 함께 일한 적이없는, 그냥 http://docs.mockery.io/en/latest/reference/expectations.html

+0

는 3 호출 후 다른 값을 반환하도록 어쨌든 거기에 해당 설명서 확인? 그것은 많이 불린다. – Steven

+0

@Steven은 익명 함수를 허용하는 구문을 검사합니다. 제공된 문서 페이지에서'andReturnUsing (closure, ...)'를 사용하십시오. 그런 식으로 자신 만의 카운터 (또는 다른 공유 변수)를 만들고 값에 따라 필요한 것을 반환 할 수 있습니다. 또는'andReturnValues ​​()'를 사용하고'0..3' 인덱스로 배열을 준비 할 수도 있습니다. – zerkms

+0

Im 그냥 다시 호출하는 것이 왜 새로운 가치를 설정하지 않는지 알아 내려고 노력하고 있습니다. 나는 메소드가 호출되는 횟수를 하드 코딩하는 아이디어를 정말로 좋아하지 않는다. – Steven

관련 문제