0

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のパラメータを初期化することです。私はすでに@upload最初にfactorygirlでオブジェクトを作成していますbefore

この問題を効率的に解決するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

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
于 2012-12-26T10:41:17.427 に答える