2010-12-09 5 views
7

현재 Rails 3 앱에서 특정 상황에서만 S3 업데이트 호출이 수행되는지 확인하기 위해 일부 단위 테스트를 수행하고 있습니다. 테스트 도중 S3를 업데이트하고 싶지 않으므로 모카 (Mocha)를 사용하여 동작을 스텁 (stub) 처리합니다. mocha를 사용하여 함수를 호출하는 방법이 있습니까? 나는 기대을 검토 한 결과, 내가 잘못하고 있어요 않는 한, 내가해야 할 것 같다모카를 사용하여 함수가 호출되는지 테스트

object.expects(:function_name).once 

그러나이 원하는 결과를 얻을하지 않습니다이 의지 플래그에게 오류를 FUNCTION_NAME 인 경우 두 번 호출되면 (원하는 경우), 한 번만 호출하면 오류를 표시하지 않지만 문제는있는 것입니다. 아니요은 함수가 0 번 호출되면 오류를 플래그합니다. 나는 그것이 호출되었는지 확인하는 방법이 필요합니다. 모카가 이걸 지원해야하는 것 같아서 어쩌면 내가 잘못하고있는 것 같아. 어떤 도움이라도 대단히 감사하겠습니다.

***** 수정 :

나는 mocha_verify 메소드가 자동으로 호출되지 않는 것을 제외하고는, 바로 그 일을 한 것으로 밝혀졌습니다. 비슷한 문제가있는 누군가를 위해, 여기에 올레 모르 텐 아문센의 답변을 확인 : Mocha Mock Carries To Another Test

+2

당신이해야 : 행운을 빌어 요, TDD (= 테스트 우선) 또는 조롱이 고통 :)이 정말로드되도록

것은 여기 내 대답처럼, 마지막 모카를로드해야 할 것이다 할 답변을 수락 된 것으로 표시하십시오. 당신이 좋은 사람들의 시간을 낭비하지 않는 그런 식으로, "답이없는 질문"을 찾아 보는 사람들은 당신과 나 같은 사람들을 사심없이 도와줍니다. – oma

답변

6

하거나

object.expects(:function_name).twice 
:

object.expects(:function_name).at_least_once 

워드 프로세서에서보세요

또는 differnet 입력이있는 경우이를 테스트해야합니다.

resultmock = mock 
object.expects(:function_name).with(someobject).returns(mock) 
resultmock.expects(:something).returns(true) 
object.expects(:function_name).with(resultmock) 

이것이 도움이되는지는 모르겠지만 시작해야합니다. 참고 : '한 번'이 기본값입니다. Mocha Mock Carries To Another Test

+0

여기에 귀하의 답변을 밖으로 끈다 http://stackoverflow.com/questions/3118866/mocha-mock-carries-to-another-test/4375296#4375296 내 문제를 해결했습니다. mocha_verify 훅은 모카 (mocha) 보석과 함께 주문한 번들러 때문에 호출되지 않았습니다. – pushmatrix

+0

와우, 그건 저를위한 첫 번째 타이머입니다. 저는 모카를 좋아하고 다른 사람들이 그것을 사용하도록 돕고 싶습니다. 내 대답에 다른 대답을 추가 했으므로 허용 된 것으로 표시 할 수 있습니다. 다행스럽게 도울 수있어! – oma

관련 문제