Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Cucumber:在所有场景中,钩子只运行一次_Ruby On Rails_Ruby_Rspec_Cucumber - Fatal编程技术网

Ruby on rails Cucumber:在所有场景中,钩子只运行一次

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钩子只运行一次,这样我就可以引导我需要针对所有场景运行的ActiveRecord对象。问题是如果我使用

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