在我的rspec测试中,我使用factorygirl创建了一个对象,在我的创建控制器中,我需要参数才能创建一个对象。由于有许多参数和与回形针的连接,我不想手工给它们。 我的代码如下:
it "should render correct JSON on success save" do
@params = {}
post(:create, @params.merge(:upload => FactoryGirl.create(:upload)))
response.body.should == @upload.to_json
end
所以我的问题是初始化:upload的参数。我已经在@upload
before
个对象
我该如何有效地解决这个问题?
感谢。
答案 0 :(得分:1)
post
不是规范的一部分,它是在响应之前发生的状态更改,因此它应该位于before
块中。
params不需要是实例变量(在RSpec中做什么?),最好使用let
。
context "When saving" do
before do
post(:create, params)
end
subject { response.body }
context "That is successful" do
let(:upload) { FactoryGirl.attributes_for(:upload) }
let(:params){
{:upload => upload }
}
it { should == upload.to_json }
end
context "That is not successful" do
# do some failure stuff here
end
end