为什么 mongodb 与rails3和rspec不一致地失败?

发布于 2024-11-10 02:16:17 字数 397 浏览 0 评论 0原文

我们有一个rails 3,使用rspec的mongodb应用程序,我认为在spec_helper中是非常正常的设置:

  DatabaseCleaner.strategy = :truncation
  DatabaseCleaner.orm = "mongoid"
  config.before(:each) do
    DatabaseCleaner.clean
  end

但由于某种原因,mongo似乎在测试中的奇怪时刻不一致地失败。也就是说,规范有 50% 的时间会运行并且没有失败。但 50% 的情况下,对 mongo 的简单查询将返回 nil 对象并导致规范失败。知道从哪里开始调试吗?在使用该应用程序的浏览器的开发模式下,这种情况永远不会发生,mongo 在那里坚如磐石。这可能是测试环境吗?

We have a rails 3, mongodb app using rspec, very normal setup I think in spec_helper:

  DatabaseCleaner.strategy = :truncation
  DatabaseCleaner.orm = "mongoid"
  config.before(:each) do
    DatabaseCleaner.clean
  end

But for some reason mongo seems to just fail at weird times in the tests inconsistently. That is, 50% of the time the spec will run and no failures. But 50% of the time a simple query to mongo will return a nil object and cause the spec to fail. Any idea where to start debugging? This never happens in development mode with a browser using the app, mongo is rock solid there. Could it be the test env?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一杯敬自由 2024-11-17 02:16:17

试试这个:

DatabaseCleaner.strategy = :truncation
Databasecleaner.orm = "mongoid"

config.before(:each) do
  DatabaseCleaner.clean_with(:truncation)
  DatabaseCleaner.start
end

config.after(:each) do
  DatabaseCleaner.clean
end

Try this:

DatabaseCleaner.strategy = :truncation
Databasecleaner.orm = "mongoid"

config.before(:each) do
  DatabaseCleaner.clean_with(:truncation)
  DatabaseCleaner.start
end

config.after(:each) do
  DatabaseCleaner.clean
end
吝吻 2024-11-17 02:16:17

您可以在没有 DatabaseCleaner 的情况下执行此操作:

config.before :each do
  Mongoid.master.collections.select {|c| c.name !~ /system/ }.each(&:drop)
end

You could do it without DatabaseCleaner with:

config.before :each do
  Mongoid.master.collections.select {|c| c.name !~ /system/ }.each(&:drop)
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文