私はこの問題を本当に抱えています。 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
あなたのモデルには何がありますか? – apneadiving
実際には、代わりに.should be_invalidを使用して作業していますが、理由はわかりません。モデルの要点は次のとおりです。https://gist.github.com/1046125 – Ivan