RSpec模型验证失败,但是在Rails Console中可以正常工作吗?

| 我真的一直陷在这个问题上。当我在Rails控制台中测试模型时,我对模型的验证失败了(但应该如此),但是我的rspec示例失败了,因为它仍然进行了验证(不应该进行验证)。我在这里想念什么,或者应该从哪里开始寻找? 谢谢, 伊万 见下文:
    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
    
已邀请:
        您确定您的第二个期望不是设置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   
    

要回复问题请先登录注册