Joh*_*non 6 rspec rspec2 ruby-on-rails-3
我有一个奇怪的情况,如果我运行一个单独的rspec模型spec文件,所有示例都是绿色的,如果我测试我的整个spec/models文件夹,我的所有示例都是绿色的.如果我测试控制器,它们都会通过绿色.如果我测试整个套件(通过rspec规范)然后我会失败 - 如果我完全删除控制器测试,一切都是绿色的.现在我期待这完全是自己造成的,但我无法理解.
我已经将其缩小到控制器测试中的特定示例 - 这导致模型规范中的示例失败.
例如.如果存在此行,则在notes_controller_spec.rb中
Note.any_instance.stubs(:valid?).returns(false)
Run Code Online (Sandbox Code Playgroud)
它导致我的models/account_spec.rb失败
Failure/Error: @account.all_notes.should have(2).notes
ArgumentError:
comparison of Note with Note failed
./app/models/account.rb:293:in `sort'
Run Code Online (Sandbox Code Playgroud)
第293行;
(self.notes + self.transactions.map(&:notes).flatten).sort {|a,b| a.created_at <=> b.created_at }
Run Code Online (Sandbox Code Playgroud)
我很确定这将成为那些面对掌心的时刻之一,所以要对我温柔!
小智 1
您是否在 before :all 块中进行任何日期设置?这些不是事务性的,可能会导致测试污染问题。
另外,我认为你的语法可能不正确:
Note.any_instance.stubs(:valid?).returns(false)
Run Code Online (Sandbox Code Playgroud)
应该:
Note.any_instance.stub(:valid?).and_return(false)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1516 次 |
| 最近记录: |