Ruby on rails 3 向特定路径发出请求

Ruby on rails 3 向特定路径发出请求,ruby-on-rails-3,rspec,Ruby On Rails 3,Rspec,在RSpec中,我目前正在使用一系列方法测试API请求,这些方法可以有效地编译为如下内容: env = Rack::MockRequest.env_for('/api/v1/projects.json') Rails.application.call(env) 我想知道在RSpec中是否有一种更短的方式向Rails应用程序发出请求。我知道你可以创建一个控制器规范并请求特定的操作,但我更希望找到一种方法来向URL发出请求,并检查输出是否符合我的预期。visit方法似乎也能工作,但我不知道如何模拟

在RSpec中,我目前正在使用一系列方法测试API请求,这些方法可以有效地编译为如下内容:

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

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

visit方法似乎也能工作,但我不知道如何模拟。

我喜欢在这个用例中使用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