2011-07-05 7 views

답변

1

컨트롤러 사양을 모델 사양에 쓸 수 없으며 작성할 수 없습니다. RSpec은 컨트롤러 사양에만 컨트롤러 관련 API를 추가하므로 모델 사양 내에서 #get #post #put 및 #delete를 호출 할 수 없습니다.

당신은 테스트하기 위해 무엇을 생각 어디를 얻을 수 RSpec에 레일 프로젝트에 README를 읽을 수 있습니다 https://github.com/rspec/rspec-rails

+0

안녕 Solnic. 합리적인 것처럼 보이지만 직접 액세스 할 수 없으므로 application_controller를 어떻게 테스트해야합니까? 그렇지? 테스트를 위해 정상적인 컨트롤러를 선택할 수는 있지만 테스트가 가장 관련성이 높은 곳에서 테스트를 수행하는 것으로 보입니다. 감사. – Simmo

+1

application_controller는 모든 컨트롤러의 기반이되므로 공유 동작이있는 경우 공유 사양을 작성하여 모든 컨트롤러 사양에 사용하십시오 다음은 공유 사양에 대한 유용한 정보입니다. http : //blog.davidchelimsky .net/2010/11/07/지정 믹스 인 -shared-example-groups-in-rspec-2 / – solnic

0

난 당신이 ... 액션의 이름을 할 필요가 믿는 그래서 예를 들어

get :show 

또는

get :edit 

또는

get :new 
+0

아니, 나는 여전히 GET에 대해 "아니오 방법"오류가 발생합니다. 또한 컨트롤러가 아닌 모델 사양에 있다고 가정하면 컨트롤러에 액션을 적용해야할지 알 수 없습니다. – Simmo

+0

그래서 모델 사양에서 컨트롤러 작업을 호출하는 이유에 대해 혼란 스럽습니다. 당신은 그 물건을 나타 내기 위해 모의, 스텁 및 가짜 입력을 사용해야합니다. 스펙은 레이어를 스팬 할 수있는 통합 테스트를 제외하고 레이어를 서로 격리시켜야합니다. 이것은 일반적인 관행이지 Law가 아닙니다. 전화가 왜 작동하지 않는지에 관해서는 잘 모르겠다. 모델에서 이것을 해보려하지 않았다. 차이점이 있는지 잘 모르겠다. – jaydel

+0

응용 프로그램 컨트롤러에서 before_filter 메서드를 사용하여 감사가 트리거되므로 모든 URL에 대한 호출로 인해 감사 레코드가 생성되는지 확인하려고합니다. 이것을 테스트하는 논리적 인 방법처럼 보였지만 RSpec을 처음 접했습니다! – Simmo

관련 문제