Как написать тест rspec для ответа json при загрузке файла jquery - PullRequest
1 голос
/ 19 июля 2011

У меня есть форма, которая использует плагин jquery-file-upload.Он отправляет сообщения в контроллер, и оба возвращаемых объекта имеют тип json.

Controller

def create
  @upload = Upload.new(params[:upload])
  if @upload.save
    render :json => [ @upload.to_jq_upload ].to_json
  else
    render :json => [ @upload.to_jq_upload.merge({ :error => "custom_failure" }) ].to_json
  end
end

У меня есть следующий тест rspec:

describe "post 'create' " do
  before(:each) do
    @upload = Factory(:upload)
    @attr_upload = {:photo => sample_file}
  end

  describe "success" do
    it "should  create a new upload object" do
      lambda do
        post :create, :upload => @attr_upload, :format => :json
      end.should change(Upload, :count).by(1)
    end
  end
end

, который работает.Я хотел бы проверить оба на наличие ошибок, так как в форме была опубликована без файла или файл был слишком большой или неправильного формата.

Вот мой тест.

describe "failure" do
  before(:each) do
    @upload = Factory(:upload)
    @attr_upload = {:photo => sample_file("too_big.jpg")}
  end

  it "should not create a new upload object" do
    lambda do
      post :create, :upload => @attr_upload, :format => :json
    end.should_not change(Upload, :count).by(1)
  end
end

Это не работает.Вот ошибка:

ActionController::RoutingError:
No route matches {:action=>"show", :controller=>"uploads", :id=>#<Upload id: nil, created_at: nil, updated_at: nil, photo_file_name: "too_big.jpg", photo_content_type: "image/jpeg", photo_file_size: 7483326, photo_updated_at: "2011-07-19 02:24:06">}

Вот мой файл маршрутов:

Hbg::Application.routes.draw do      
  resources :uploads
end

Почему я получаю эту ошибку, когда отправляю форму в действие 'create'?Ответ должен быть объектом json.

...