Ruby on rails Cucumber:在所有场景中,钩子只运行一次
我有一个包含多个场景的场景大纲。我希望我的Before钩子只运行一次,这样我就可以引导我需要针对所有场景运行的ActiveRecord对象。问题是如果我使用Ruby on rails Cucumber:在所有场景中,钩子只运行一次,ruby-on-rails,ruby,rspec,cucumber,Ruby On Rails,Ruby,Rspec,Cucumber,我有一个包含多个场景的场景大纲。我希望我的Before钩子只运行一次,这样我就可以引导我需要针对所有场景运行的ActiveRecord对象。问题是如果我使用 Before do # my code here end 这将在每个场景之前执行。是否需要在整个大纲中运行一次?我认为,如果您只是在功能/支持中的文件中创建对象,它们将被持久化: ImportantThing.create(:name => "USEFUL THING") 这是因为在每个场景开始之前,Cucumber将启动
Before do
# my code here
end
这将在每个场景之前执行。是否需要在整个大纲中运行一次?我认为,如果您只是在功能/支持中的文件中创建对象,它们将被持久化:
ImportantThing.create(:name => "USEFUL THING")
这是因为在每个场景开始之前,Cucumber将启动一个数据库事务,然后回滚到其先前的状态,该状态应包含已加载的对象。我遇到了相同的问题,我需要为所有事件日志测试创建一个订阅服务器管理器。如果我只是使用一个before钩子或一个常规步骤(例如,给定的),那么管理器将在每个场景之前创建 我的解决方案最终是在我的第一个场景中使用一个标记前钩子
Before('@first_logging_scenario') do
# do something useful
end
为了关闭我的经理,我在上一个场景中使用了一个标记后钩子
After('@last_logging_scenario') do
# do something useful
end