向特定路径发出请求

时间:2011-01-18 04:56:42

标签: ruby-on-rails-3 rspec

在RSpec中我正在使用一系列有效编译的方法来测试API请求:

env = Rack::MockRequest.env_for('/api/v1/projects.json')
Rails.application.call(env)

我想知道是否有更短的方式向RSpec中的Rails应用程序发出请求。我知道你可以创建一个控制器规范并请求特定的操作,但我更像是一种向URL发出请求并检查输出是否符合预期的方法。

2 个答案:

答案 0 :(得分:1)

我喜欢在这个用例中使用Rack :: Test。例如:

require 'spec_helper'
require 'rack/test'

describe 'API' do
  include Rack::Test::Methods

  def app
    Rails.application
  end

  before do
    @password = "12345"
    @project  = Factory(:project)
    @user     = Factory(:user,
                        :password              => @password,
                        :password_confirmation => @password,
                        :project               => @project)

    authorize @user.email, @password
  end

  it "gets projects" do
    get "/api/v1/projects.json"

    last_response.should be_ok
    last_response.body.should == [@project].to_json
    last_response.content_type.should == 'application/json'
  end
end

答案 1 :(得分:0)

“访问”方法似乎也有效,但我不知道嘲笑。