2011-02-10 1 views
2

다음은 Ruby on Rails 튜토리얼을 완료 한 후 이어지는 내용입니다.Rspec 오류 : 최종 변경 예정 '변경'(모델, : 개수)

저는 Rspec이 '변경'을 식별하는 데 어려움을 겪고 있기 때문에 솔루션을 찾기 위해 보석을 섞어서 일치시키는 데 많은 시간을 보냈습니다.

오류 : '에서 /spec/requests/athletes_spec.rb:20:in 블록 (3 단계) : 정의되지 않은 메서드 change' for #<Class:0x00000100e715e8> (NoMethodError)

require 'spec_helper' 

describe "Athletes" do 

    before(:each) do 
    @attr = { :gender => "male", 
     :age => 20, 
     :height => 120, 
     :weight => 100, 
     :skill => 2 
    } 
    @user = Factory(:user) 
    end 

    describe "Creating Athletes" do 

    describe "with the correct user should work" do 
     lambda do 
     post :create, :athlete => @attr 
     end.should_not change(Athlete, :count) 

    end 

    end 
end 

나는 TDD의 개념을 사랑하지만 내가 일을 할 수있는 테스트 환경을 얻으려고 시간의 절반처럼 보인다. 아무도 내가 잘못 가고 있다고 말할 수 있습니까?

멀어져 편집 :

should_not change(Athlete, :count) 

에 :

source 'http://rubygems.org' 

gem 'rails', '3.0.4' 
gem 'sqlite3-ruby', '1.3.2', :require => 'sqlite3' 
gem "will_paginate", "3.0.pre2" 
gem 'jquery-rails', '>= 0.2.6' 



group :development do 
    gem 'rspec-rails', '2.5.0' 
    gem 'annotate-models' 
end 

group :test do 
    gem 'factory_girl_rails' 
    gem 'rspec', '2.5.0' 
    gem 'webrat' 
end 

답변

1

첫째, 당신은을 제공해야를 사용하는 예키워드 (당신의 경로에 따라) 당신이 컨트롤러 액션 대신 URI를 지정해야합니다 요구 사양에

describe "Creating Athletes" do 
    it "with the correct user should work" do 

둘째, 그래서는 다음과 같이 읽어야 : 내부 describeit로 변경

post '/athletes', :athlete => @attr

+0

나는 당신의 포스트의 첫번째 3 개의 선 및 종려 및 이마를 만났다. 나는 직장에서 Github을 확인했지만, 나는 이것이 대답이라는 것을 이미 알고 있었다. 그것을 지적 해 주셔서 감사합니다, Zetetic! –

1

당신은 변경 시도 할 수 :

가 여기 내 Gemfile의

should_not change { Athlete.count } 
+1

도움을 주셔서 감사합니다, Clemensp하지만 슬프게도 작동하지 않았습니다. –

+0

같은 문제가 있으며 그 중 하나가 저에게 효과가 없었습니다. –