我有一个包含多个场景的场景大纲。我希望我的Before钩子只运行一次所以我可以引导我需要针对所有场景运行的ActiveRecord对象。问题是如果我使用
Before do
# my code here
end
这将在每个场景之前执行。无论如何都要为整个大纲运行一次吗?
答案 0 :(得分:3)
我认为如果您只是在 features / support 中的文件中创建对象,它们将被保留:
ImportantThing.create(:name => "USEFUL THING")
这是因为在每个场景之前,Cucumber将启动数据库事务,然后回滚到其先前状态,该状态应包含您已加载的对象。
答案 1 :(得分:0)
我遇到了同样的问题,我需要为所有事件记录测试创建一次订阅者管理器。如果我只使用了前钩子或常规步骤(例如,给定),则在每个场景之前创建管理器。
我的解决方案最终是在第一个场景中使用挂钩之前标记的。
Before('@first_logging_scenario') do
# do something useful
end
要关闭我的经理,我在上一个场景中使用了标记的After hook
After('@last_logging_scenario') do
# do something useful
end