2017-07-20 89 views
0

我有一个帮助程序模块,include'd在RSpec.describe块中。这里的大多数方法都与管理登录/注销状态有关,所以我想确保使用该帮助程序的任何内容都会自动清除全局状态,以避免泄漏双/嘲。在rspec帮助程序模块中添加'after'块

但我看到in the docs每一个例子似乎是有关添加只是辅助方法,而不是额外的before/after块。

我可以添加一个额外的after块,它不会覆盖辅助模块中现有的块吗?

回答

1

如果我正确理解你的问题,像这样的事情应该做的伎俩。 (实施例是与after块的链路上的第一个加入。)

helpers.rb

module Helpers 
    def help 
    :available 
    end 

    def self.included(base) 
    base.after(:each) do 
     puts "after in helpers.rb" 
    end 
    end 
end 

example.rb

require './helpers' 
RSpec.configure do |c| 
    c.include Helpers 
end 

RSpec.describe "an example group" do 
    after(:each) do 
    puts "After in example.rb" 
    end 

    it "has access to the helper methods defined in the module" do 
    expect(help).to be(:available) 
    end 
end 

,然后运行它

$ rspec example.rb 
# After in example.rb 
# after in helpers.rb 
# . 
# Finished in 0.00196 seconds (files took 0.07939 seconds to load) 
# 1 example, 0 failures 

如果我误解了这个问题,请告诉我,我可以进一步澄清或更改示例

1

答案是。在您的测试中创建的每个before | after块将在块之前运行帮助文件。

所以你不会覆盖帮手块。