2014-03-31 2 views
1

하나의 컨트롤러에 대한 요청 사양을 작성 중이며 AJAX를 통해 호출되는 다른 컨트롤러의 메서드를 스텁하고 싶습니다. AJAX 호출의 컨트롤러 동작은 주소를 geolocating하기위한 것이며 요청의 나머지 부분과 관련이 없습니다. 컨트롤러 동작은 항상 아무 것도 렌더링하지 않습니다.Rspec : 컨트롤러 동작을 스텁 아웃

before :each 
    AddressesController.any_instance.stub(:update).and_return nil 
end 

그러나, 나에게 오류를 제공합니다 :

내가 해봤 항상 아무것도 렌더링하지 않기 때문에

Failure/Error: Unable to find matching line from backtrace 
ActionView::MissingTemplate: 
    Missing template addresses/update, application/update 

없음 뷰 템플릿은 작업을 위해 존재한다.

다른 컨트롤러의 작업을 완전히 내 보냅니다. 대신 방법의 내부를 스텁 처리해야합니까?

답변

0

요청 사양 내에서 컨트롤러 작업을 스텁 처리 할 수 ​​없습니다. 그러나 AJAX 요청을 스텁 (stub) 할 수 있으므로 컨트롤러 작업에 결코 도달 할 수 없습니다. Webmock은 좋은 선택입니다.

0

자세한 내용은 this thread을 참조하십시오. 앞서 언급 한 것처럼 메서드의 내부 구조를 대신 작성해야합니다.

+0

나는 그 질문을 전에 보았지만, 그것이 내 질문과 어떤 관련이 있는지 보지 못했다. 이 질문은 이상하게도 Rails가 컨트롤러 오류를 처리하는 것으로 테스트 한 것 같습니다. 내부 오류를 처리하는 것이 합리적이라고 생각합니다. 저는 별도의 컨트롤러에 대한 작업을 스터 빙하는 방법에 대해 묻고 있습니다. 테스트 할 내용과 관련이없는 경우이 작업의 내부를 고려하지 않아도됩니다. 내가 놓친 게 있니? 이것을 할 수있는 방법이 있습니까? – eirikir