带有Rails(3.2)和Mongoid /意外行为的RSpec。

时间:2014-08-18 22:19:33

标签: ruby-on-rails rspec mongoid

我有一个rails(3.2)应用程序使用Mongoid使用MongoDB。

我尝试测试记录会在我进行更改时更新它的updated_at字段,这很简单:

  it "Should modify updated_at when we make changes to a record" do  
    record = create(:record)  
    previous_updated_at = record.updated_at
    record.touch    
    expect(record.updated_at).not_to eq(previous_updated_at)
  end

测试不会通过,除非我添加睡眠(1)。类似的东西:

  it "Should modify updated_at when we make changes to a record" do  
    record = create(:record)  
    previous_updated_at = record.updated_at
    sleep(1)
    record.touch    
    expect(record.updated_at).not_to eq(previous_updated_at)
  end

我确定有一个解决方法。请注意,您可以在https://gist.github.com/eqbal/1a4d96a0e761eb0faf22查看我的spec_helper.rb。

提前致谢

1 个答案:

答案 0 :(得分:0)

我不得不将Mongoid gem升级到版本"〜> 3.0.1&#34 ;.

然后我必须设置数据库会话选项consistency: :strong, safe: true,这两个选项都不是默认设置,以确保您可以随时立即回读使用Mongoid编写的数据。