黄瓜在方案结束之前执行挂钩之后

时间:2013-12-17 09:06:09

标签: ruby-on-rails ruby cucumber hook

我在hooks.rb中有一个After hook,用于删除在上一个场景中创建的用户。 我开始注意到,当测试在一天的特定时间运行 时,此挂钩正在场景中执行。 有一种方法执行直到某一行,然后钩子在该方法中的断言命令之前执行,因为它失败了。 测试从批处理文件(“ruby file_name.rb”)运行。

有谁知道为什么会发生这种情况或如何解决?

谢谢!

2 个答案:

答案 0 :(得分:0)

您是否从命令行运行测试,如下所示?

$ cucumber

我建议使用调试器gem。您可以在认为失败之前添加调试器语句,然后使用一些调试器命令

https://github.com/cldwalker/debugger

答案 1 :(得分:0)

或许与: https://github.com/cucumber/cucumber/issues/52

问题52主要是在主服务器上修复,但我认为还有一些剩余的测试需要在发布之前修复。

无论如何,您可能会尝试将database_cleaner gem用于此目的。我们在每个测试场景之前使用干净的数据库,以确保我们有离散测试,由于其他测试的结果,这些测试不会产生误报/否定结果。我们使用以下内容:

begin
  # start off entire run with with a full truncation
  DatabaseCleaner.clean_with :truncation
  # continue with the :transaction strategy to be faster while running tests.
  DatabaseCleaner.strategy = :transaction
rescue NameError
  raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end

我们在每次运行之前加载测试种子:     之前做|场景|       加载Rails.root.join('db / seeds.rb')     端

请注意,我们的seeds.rb会检查它正在运行的环境以保持简短。以这种方式运行的大种子文件会显着增加测试运行时间,所以要小心。