2011-06-24 7 views
0

私はこの問題を本当に抱えています。 railsコンソールでテストしているときに私のモデルに対する私の検証は失敗するはずですが、私のrspecの例は失敗しています。私はここで何が欠けていますか、私はどこから見始めなければなりませんか?RSpecモデル検証に失敗しましたが、Railsコンソールで問題なく動作しますか?

おかげで、 イヴァン

は、以下を参照してください。

ivan:~/Development/ruby/IvanEnviromanRefinery [git:master+] → bundle exec rspec ../refinerycms-link/ 
    .............................F. 

    Failures: 

     1) BlogPost bookmark links must have a link url if it is a link 
     Failure/Error: Factory.build(:post, 
      expected valid? to return false, got true 
     # /Users/ivan/Development/ruby/refinerycms-link/spec/models/blog_post_spec.rb:197:in `block (3 levels) in <top (required)>' 

    Finished in 6.56 seconds 
    31 examples, 1 failure 

    Failed examples: 

    rspec /Users/ivan/Development/ruby/refinerycms-link/spec/models/blog_post_spec.rb:196 # BlogPost bookmark links must have a link url if it is a link 


    ivan:~/Development/ruby/IvanEnviromanRefinery [git:master+] → rails console 
    Loading development environment (Rails 3.0.9) 
    ruby-1.9.2-p180 :001 > b = BlogPost.new 
    => #<BlogPost id: nil, title: nil, body: nil, draft: nil, published_at: nil, created_at: nil, updated_at: nil, user_id: nil, cached_slug: nil, custom_url: nil, link_url: nil, is_link: nil, custom_teaser: nil> 
    ruby-1.9.2-p180 :002 > b.title=' 2011-06-24 8:34 ' 
    => " 2011-06-24 8:34 " 
    ruby-1.9.2-p180 :003 > b.body='goo' 
    => "goo" 
    ruby-1.9.2-p180 :004 > b.is_link = true 
    => true 
    ruby-1.9.2-p180 :005 > b.valid? 
    => false 
    ruby-1.9.2-p180 :007 > b.save 
    => false 
    ruby-1.9.2-p180 :008 > b.errors 
    => {:link_url=>["must have a link_url if is_link is true"]} 
    ruby-1.9.2-p180 :009 > 


    require 'spec_helper' 
    Dir[File.expand_path('../../../features/support/factories/*.rb', __FILE__)].each{|factory| require factory} 

    describe BlogPost do 
     let(:blog_post) { Factory :post } 

     ... 

     describe "bookmark links" do 
      it "may have a bookmark link" do 
      Factory.build(:post, 
         :title => "a link", 
         :body => "link text", 
         :is_link => true, 
         :link_url => "http://example.com").should be_valid 
      end 
      it "must have a link url if it is a link" do 
      Factory.build(:post, 
           :title => "a link", 
           :body => "link text", 
           :is_link => true).should_not be_valid 
      end  
     end 
    end 
+0

あなたのモデルには何がありますか? – apneadiving

+0

実際には、代わりに.should be_invalidを使用して作業していますが、理由はわかりません。モデルの要点は次のとおりです。https://gist.github.com/1046125 – Ivan

答えて

1

はあなたの第二の期待にLINK_URLは何とか設定イマイチ確信はありますか?値を出力してログを確認してみてください

it "must have a link url if it is a link" do 
    post = Factory.build(:post, 
    :title => "a link", 
    :body => "link text", 
    :is_link => true) 
    Rails.logger.info "Post link: #{post.link_url}" 
    post.should_not be_valid 
end 
+0

はい、link_urlは設定されていません。これはゼロです。 putsとawesome_printステートメントを追加して値を検査しようとしました。工場を取り除いてモデルを作っただけでも。私がrspecにいるとき何らかの理由でそれは物事が無効ですか?本当です! – Ivan

+0

これは.should be_invalidを使って動作します。なんらかの理由で、代わりに.should_not be_valid – Ivan

+1

の作業が行われ、元の方法で動作しています。おそらく、スポークを再起動することはやりました。スポークでボーク! – Ivan

関連する問題