Ruby on rails - 使用 params.merge 将对象的参数传递到 Rspec test 中



在我的rspec测试中,我用factorygirl创建了一个对象,在我的create控制器中,我需要参数来创建对象。因为回形针有很多参数和联系,所以我不想手工给他们。我的代码如下:

  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的参数。我已经用factorygirl创建了@upload对象开头是before

我该如何有效地解决这个问题?

谢谢。

post不是规范的一部分,它是在响应之前发生的状态变化,因此它应该进入before块。

参数不需要是实例变量(在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

相关内容

  • 没有找到相关文章

最新更新