ruby-on-rails – RSpec失败,因为它认为ActiveRecord对象不相等
很简单的规格……
@post.user.should == @user 即使两个对象除了object_id之外在各方面都相同,Spec也会失败.如果它们的id相同,则ActiveRecord对象应该等于(==).使用factory_girl创建对象.我已经确认这两个对象都不是“.new_record?”.比较@ post.user.id和@ user.id有效. 更多的是行为不一致.这些测试工作正在进行,现在尽管没有任 > Rails 3.1 我通常使用spork,但这也没有spork. 更多细节: 在ActiveRecord :: Base中,有问题的代码行似乎如下 def ==(comparison_object) super || comparison_object.instance_of?(self.class) && id.present? && comparison_object.id == id end 具体来说,“instance_of?”检查失败的时候不应该.我检查了两个对象的类层次结构.但是,当我检查每个对象的class.id时,它们并不相同. 此外,行为取决于我运行的命令… jruby -S bundle exec rspec spec (FAILS) jruby -S bundle exec rspec specmodels (PASSES) jruby -S bundle exec rspec specmodelspost_spec.rb (PASSES) 在我的环境/ test.rb文件中设置cache_classes = true似乎解决了这个问题,但我不认为这是必要的. 解决方法
这最终真的很傻.问题是我在/ spec / integration中进行了集成测试而不是/ spec / requests. Rspec / Rails只在一组特定的目录中执行加载魔法,但会从所有目录运行所有测试(导致双重加载).
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |