Tag:

在Cucumber Around Hook中调用Block多次(Ruby)

我试图运行一个场景几(30)次,以获得一个很好的统计样本。 但是块只执行一次; 每个后续时间都会导致场景被调用而不执行(尽管它表示场景确实以大约5毫秒的时间成功完成)。 Around(‘@mass_benchmark’) do |scenario, block| $seconds_taken = “SECONDS TAKEN NOT SET” @time_array = [] 30.times do before_hook(scenario) block.call after_hook(scenario) @time_array << $seconds_taken end write_time_array_to_file(@time_array, scenario_name) end 标签@mass_benchmark执行此块,而不是〜@ mass_benchmark,它只是正常执行场景。 before_hook和after_hook方法复制Before(’〜@ mass_benchmark’)和After(’~mass_benchmark’)钩子(实际上只调用相同的方法)。 变量$ seconds_taken是围绕我正在计时的特定区域设置的。 我没有计时整个测试,只是它的一个关键部分; 测试的其余部分到达那一点,这不是定时部分的一部分,所以我不能只是将定时部分移到此外。 这个问题可能与我在这些方法中所做的事情有关,但据我所知,一切正常(如有良好的put语句所示)。 任何想法都表示赞赏!

定义“method_called”..如何调用每次调用类的任何函数时调用的钩子方法?

我想创建一个钩子方法,每次调用类的任何函数时都会调用它。 我已经尝试过method_added,但它只在类定义时执行一次, class Base def self.method_added(name) p “#{name.to_s.capitalize} Method’s been called!!” end def a p “a called.” end def b p “b called.” end end t1 = Base.new t1.a t1.b t1.a t1.b Output: “A Method’s been called!!” “B Method’s been called!!” “a called.” “b called.” “a called.” “b called.” 但我的要求是在程序中的任何地方调用的类的任何函数都会触发“method_called”,hook方法。 Expected Output: “A Method’s been […]

每个function之前和之后都有一个黄瓜钩

有没有办法在每个黄瓜function之前和之后运行特定代码块与某些标签? 由于设置过程非常昂贵,我不想在每个场景之前运行它。