我有一个简单的控制器测试,其中包含以下代码:
context "POST :create" do
before (:each) do
post :create, :user_id => @user.id,
:account => { .. some data ... }
end
it { response.status.should == 201 }
it { response.location.should be_present }
end
现在我想到了一种非常简单的加速测试的方法,即使用before(:all)
而不是before(:each)
。在这种情况下,post请求只会被执行一次。
于是我写了这个:
context "POST :create" do
before (:all) do
post :create, :user_id => @user.id,
:account => { .. some data ... }
end
it { response.status.should == 201 }
it { response.location.should be_present }
end
但是我遇到了以下错误:
RuntimeError:
@routes is nil: make sure you set it in your test's setup method.
这是设计上的吗?有方法可以规避它吗?