在RSpec中我正在使用一系列有效编译的方法来测试API请求:
env = Rack::MockRequest.env_for('/api/v1/projects.json')
Rails.application.call(env)
我想知道是否有更短的方式向RSpec中的Rails应用程序发出请求。我知道你可以创建一个控制器规范并请求特定的操作,但我更像是一种向URL发出请求并检查输出是否符合预期的方法。
答案 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)
“访问”方法似乎也有效,但我不知道嘲笑。