我在hooks.rb中有一个After hook,用于删除在上一个场景中创建的用户。 我开始注意到,当测试在一天的特定时间运行 时,此挂钩正在场景中执行。 有一种方法执行直到某一行,然后钩子在该方法中的断言命令之前执行,因为它失败了。 测试从批处理文件(“ruby file_name.rb”)运行。
有谁知道为什么会发生这种情况或如何解决?
谢谢!
答案 0 :(得分:0)
您是否从命令行运行测试,如下所示?
$ cucumber
我建议使用调试器gem。您可以在认为失败之前添加调试器语句,然后使用一些调试器命令
答案 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会检查它正在运行的环境以保持简短。以这种方式运行的大种子文件会显着增加测试运行时间,所以要小心。