我正在做一些围绕每个人的特技表演。我发现around(:each)
有些奇怪。当我在下面的例子中运行它时输出为:
describe "AroundSpec" do
before(:each) do
p "On before each block"
end
around(:each) do
p "On around each block"
end
it "1+1 = 2" do
expect(1+1).to eq(2)
end
end
输出:
"On around each block"
.
Finished in 0.00038 seconds
1 example, 0 failures
如果您发现它在每个块之前没有执行。这种方式是假设是工作还是rspec中的错误?提前致谢
答案 0 :(得分:2)
这是因为我认为您使用around(:each)
错误。为了正确地执行此操作,您必须将测试作为参数传递给块。当您运行此测试时:
around(:each) do | example |
p "Before the test"
example.run
p "After the test"
end
使用此代码输出的测试文件将是:
"Before the test"
"On before each block"
"After the test"
您的代码正在执行的操作是忽略before
块并仅执行around
(1+1=2
测试从未实际运行)。有关这方面的文档可以在这里找到:
http://rubydoc.info/gems/rspec-core/RSpec/Core/Hooks#around-instance_method