我有几个如下所示的规范文件:
describe "My DSL" do
before :each do
@object = prepare_my_object
end
describe "foo" do
before :each do
@result = @object.read_my_dsl_and_store_stuff_in_database__this_is_expensive
end
it "should do this" do
@result.should be_this
end
it "should not do that" do
@result.should_not be_that
end
# ... several more tests about the state of @result
end
# ...
end
这些测试需要很长时间,主要是因为第二个before :each
块每次都运行。使用before :all
instead 并没有真正的帮助,因为它在 external 之前被调用before :each
。将所有期望放在一个it
块中会有所帮助,但这被认为是不好的风格。
让我的昂贵方法只执行一次的最佳做法是什么?