레일을 배우기 위해 수행 한 간단한 레일 앱용으로 작성한 2 가지 간단한 RSpec 테스트가 있습니다. 원래 Link 클래스의 모의 설정을했지만 동일한 문제가 발생했습니다.RSpec 컨트롤러 테스트가 실패합니다 - 모의 데이터를로드하는 방법?
이 내 테스트 코드입니다 :
require 'spec_helper'
describe LinksController do
render_views
before(:each) do
link = Link.new
link.stub!(:title).and_return("Reddit")
link.stub!(:url).and_return("http://www.reddit.com")
link.stub!(:created_at).and_return(Time.now)
link.stub!(:updated_at).and_return(Time.now)
link.stub!(:user_id).and_return("1")
link.stub!(:id).and_return("1")
link.save
user = User.new
user.save
end
it "renders the index view" do
get :index
response.should render_template('links/index')
response.should render_template('shared/_nav')
response.should render_template('layouts/application')
end
it "renders the show view" do
get :show, :id => 1
response.should render_template('links/show')
response.should render_template('shared/_nav')
response.should render_template('layouts/application')
end
end
내가 모두 레일 및 RSpec에 새로운 해요, 확실하지 내가이 작업을 얻기 위해 일을해야하는지. 데이터가 필요할 때 LinksController에서이 show 메소드를 테스트하는 가장 좋은 방법은 무엇입니까? 나는 mock_model도 시도했지만 어쩌면 내가 잘못 사용했다.
당신은 문제가 당신이 모델을 스텁 것을, 그래서이 데이터베이스에 저장되지 않은 것 Github
감사합니다. 여전히 내 코드처럼 보이게하는 몇 가지 문제 해결 방법이 있습니다. 색인 및 쇼 페이지 모두에 링크를 제출 한 사용자의 전자 메일 주소 (전체가 아님)를 표시하고 있으며 '전자 메일'에 대해 nil에 대한 메서드 오류가 발생합니다. NilClass는 사용자가 존재하지 않는 것처럼 보입니다. 만들어진. 이 부분을 더 자세히 살펴 보겠지 만 권장 사항이 초기 문제를 해결 한 것으로 보입니다. –
이것은 매우 가능하며 단순히 User.create를 호출하면 유효한 사용자가 생성되지 않기 때문일 수 있습니다. 공장에 대해서는 좋은 점이 있습니다.이 테스트에서는 재사용 할 수있는 유효한 사용자를 만들고 있는지 확인합니다. 유효성 검사를 위해 사용자에게 전자 메일이 필요하면 User.create (: email => '[email protected]')와 같은 작업이 필요할 수 있습니다. –
RSpec은 공장을 지원합니까 아니면 출고시 공장 출신의 소녀를 설치하는 것이 최선입니까? –