Сделать запрос на конкретный путь - PullRequest
0 голосов
/ 18 января 2011

В RSpec в настоящее время я тестирую запросы API, используя серию методов, которые эффективно компилируются в нечто вроде этого:

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

Мне было интересно, есть ли более короткий способ сделать запрос к приложению Rails в RSpec. Я знаю, что вы можете создать спецификацию контроллера и запросить конкретные действия, но мне больше по душе способ сделать запрос к URL-адресу и проверить, что результат соответствует ожидаемому.

Ответы [ 2 ]

1 голос
/ 18 января 2011

Мне нравится использовать 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
0 голосов
/ 18 января 2011

Кажется, что метод "посещения" тоже работает, но я не знаю насчет насмешек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...