Спецификация контроллера RSpec проходит без соответствующей переменной экземпляра в контроллере - PullRequest
0 голосов
/ 17 декабря 2011

Я написал спецификацию для проверки переменной экземпляра @vendors в действии index моего контроллера вендоров.Если я удаляю @vendors из контроллера вендора, спецификация все равно проходит.Любые идеи относительно того, почему назначает (: vendors), если @vendors не существует в контроллере.Вот мой код:

Контроллер поставщиков

class VendorsController < ApplicationController
  load_and_authorize_resource

  def index
    # @vendors = Vendor.all
  end

end  

Спецификация контроллера поставщиков

require 'spec_helper'
require 'ruby-debug'

describe VendorsController do
  login_user

  before(:each) do
    @vendor = Factory(:vendor)
  end

  describe "GET index" do
    before(:each) do
      @ability.can :read, Vendor
    end
    it "assigns all vendors to @vendors" do
      get :index
      assigns(:vendors).should == [@vendor]
    end
    it "should render the index template" do
      get :index
      response.should be_success
      response.code.should eq("200")
      response.should render_template("index")
    end
  end
end

Фабрика поставщиков

FactoryGirl.define do
  factory :vendor do |f|
    f.sequence(:name) { |n| "Test#{n}" }
    f.sequence(:address) { |n| "000 Test#{n} drive, Hampton" }
    f.state "Virginia"
    f.zip "00000"
    f.sequence(:telephone) { |n| "000-000-000#{n}" }
    f.sequence(:poc) { |n| "Test#{n}" }
  end
end

Спасибо

1 Ответ

0 голосов
/ 17 декабря 2011

Поскольку load_and_authorize_resource фактически загружает и авторизует.

Так что ваш код не нужен.

Вы можете изменить с authorize_resource, поэтому спецификация не будет выполнена.

...