일부 기능을 갖춘 기본 컨트롤러가 있습니다. 기본 컨트롤러는 외부에서 액세스 할 수 없으며 해당 라우팅과 일치하지 않습니다.기본 (초록) 컨트롤러를 테스트하십시오.
그런 다음 컨트롤러를 다른 컨트롤러로 확장하여 추가 기능을 추가하고 경로를 추가하기 위해 각 컨트롤러에 3 가지 방법을 정의하기 위해 컨트롤러를 3 개 확장했습니다.
나는 기본 컨트롤러를 테스트 할 수 있지만, 해당 작업에 대한 경로 (어떤 경로 오류가 일치하지 않습니다)이 없기 때문에 나는
post :index
할 수 없습니다
내가 추가하지 않으 그 3 개의 관제사 중 한 관제사에 대한 시험. 관제사가 많이 바뀌기 때문에 (관제사는 3 주간의 캠페인 중 사용 된 후 삭제됨).
일부 코드 ... :
class SchoolCampaignController < CampaignController
def campaign_name
'school'
end
def campaign_url
school_url
end
end
그 컨트롤러가 기본적으로 있습니다
기본 컨트롤러의 accesible 컨트롤러의
class CampaignController < ApplicationController
def index
#some code...
end
def campaign_name
raise('campaign_name missing')
end
def campaign_url
raise('campaign_url missing')
end
#more actions....
end
한 CampaignController, SchoolCampaignController
그 그러나 때때로 내가 필요 기본 동작 중 하나를 재정의하십시오.그래서, 내가 뭘 잘못하고 있니? CampaignController를 제대로 테스트하려면 어떻게해야합니까?
편집 : 나는 오류가 발생하는 두 가지 방법을 테스트하고 싶지 않아, 내가 예를 들어 인덱스 또는
내가 "응답 시도했습니다 (도시하지 않음)에 다른 작업의 일부를 테스트 할 = controller.index "하지만 이전 필터를 호출하지 않고 응답은 http 응답이 아니라 단지 그 명령의 출력입니다 (나는 response ...와 같은 기대를 할 수 없습니다 render_template (xxxx)))
EDIT 2 : 이전의 (: all) 블록에서 테스트 한 경로를 작성한 후 라우팅에 문제가 없지만 현재는 존재하지 않는 뷰에 대한 오류가 발생합니다 (각각의 접근 가능한 컨트롤러는 모든 뷰를 구현하지만, 추상화 t 하나는 비공개 임)
은'컨트롤러의 캠페인 ... 다음 deleted' 삼주와시 사용 - 아마 데이터 코드가 아닌해야 뭔가처럼 나에게 소리. –
코렐 헤인즈가 "빠른 테스트"비디오에서와 같은 방식으로 컨트롤러의 기능을 PORO로 분해하고 그 기능을 테스트 할 수 있는지 궁금합니다. http://www.youtube.com/watch?v=bNn6M2vqxHE –
Jason, 컨트롤러가 삭제되지 않고 영원히 살고 있다고 상상해보십시오. 라우트/뷰가없는 추상 컨트롤러에서 공유 코드를 테스트하고 싶습니다. 해당 비디오가 표시되어 도움이 되길 바랍니다. – arieljuod