我有一个包含大约20个ExampleGroups的rspec测试(由'describe'关键字定义)。每个ExampleGroup都包含一个在每个示例之后调用的'after'方法。
describe "grouping" do
include Common
after do
after_example
end
end
在此测试中,'after'方法在所有20个ExampleGroup中是相同的。目前,我只是使用mixin来避免重复代码,但总是必须指定'after'子句并且应该在每个ExampleGroup中调用mixin似乎是多余的。
有没有办法做到这一点所以我不必在每个ExampleGroup中指定'after'?
答案 0 :(得分:4)
好吧,这些示例组都有相同的后方法,它们是否以某种方式相关?因为那时您可以将组嵌套在父级下。
describe "parent grouping" do
include Common
after do
after_example
end
describe "child 1" do
pending
end
describe "child 2" do
pending
end
...
end
RSpec将在子块之前/之后运行父分组,并为其提供mixin。
答案 1 :(得分:0)
您也可以编写模块,以便自动添加后块:
module Common
def included(base)
base.after do
# add shared "after" logic here
end
end
end
describe 'a spec' do
include Common
# no need to add the after logic, since it got added on 'include'
end