Rails 4.1 + Rspec + rack-test: неопределенный метод `app'

Я работал над приложением Rails 4.1.1 и настраивал Rspec. Я хочу проверить контроллер, используя rask-test last_response метод. Я следовал инструкциям и вот мой spec_helper.rb файл

require 'rack/test'
require 'simplecov'
SimpleCov.start

RSpec.configure do |config|
  config.include Rack::Test::Methods
end

и вот мой файл rails_helper:

ENV["RAILS_ENV"] ||= 'test'
require 'spec_helper'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'

У меня есть мой пример Rspec, который прекрасно работает до этой строки:

r = JSON.parse(last_response)

Я получаю это сообщение об ошибке:

Failure/Error: r = JSON.parse(last_response)
     NameError:
       undefined local variable or method `app' for #<RSpec::ExampleGroups::AdminMailActionsController::New:0x007fb100dc5ab0>

У кого-нибудь есть представление о том, что здесь происходит?

РЕДАКТИРОВАТЬ: Вот тест:

      describe "#new" do
        it "should get the first job in the queue for the Cheat Cheat" do
          @job_queue = FactoryGirl.create(:job_queue)
          @job = FactoryGirl.create(:job, job_queue: @job_queue)
          @organisation = @job_queue.organisation
          @params = {:organisation_id => @organisation.id, :job_queue_id => @job_queue.id}
          get :new, @params
          p last_response.body
          expect(response.status).to eq 200
          expect(assigns(:job_queue)).to eq @job_queue
          expect(assigns(:organisation)).to eq @organisation
          expect(assigns(:job)).to eq @job
        end
    end

объект ответа огромен, а response.body пуст, когда я должен был @mail_action, @job_queue, @organisation а также @job имеется в наличии. Он отлично работает в браузере, поэтому переменная есть.

РЕДАКТИРОВАТЬ 2: Метод контроллера:

 def new
    @mail_action = MailAction.new
    @mail_action.job_queue = @job_queue
    @job_queue.organisation = @organisation
    if @job_queue.jobs.first.nil?
      @job = Job.new(
        name: 'sample job',
        short_code: 'oomph123',
        job_status_updated_at: DateTime.now,
        created_at: DateTime.now,
        updated_at: DateTime.now,
        job_status: Job::STATUS_ACCEPTED,
        source_file: 'http://my_url.com/test_file.lol',
        complete_file: 'http://my_url.com/awesome_file.lol'
        )
      Job.all.empty? ? @job.id = 1 : @job.id = Job.last.id + 1
      @job.user = current_user
      @job.job_action = JobAction.first
      @job.job_queue = @job_queue
    else
      @job = @job_queue.jobs.first
    end
  end

Так что, если я правильно понял, я должен был @mail_action, @job_queue, @organisation а также @job имеется в наличии.

0 ответов

Другие вопросы по тегам