Nuovo per i test, sto facendo fatica a far passare alcuni test del controller.Errore controller Rspec in attesa di <"index"> ma rendering con <"">
Il seguente test di controllo genera l'errore:
expecting <"index"> but rendering with <"">
Ho quanto segue in una delle mie specifiche del controller:
require 'spec_helper'
describe NasController do
render_views
login_user
describe "GET #nas" do
it "populates an array of devices" do
@location = FactoryGirl.create(:location)
@location.users << @current_user
@nas = FactoryGirl.create(:nas, location_id: @location.id)
get :index
assigns(:nas).should eq([@nas])
end
it "renders the :index view" do
response.should render_template(:index)
end
end
Nei miei macro del controller, ho questo:
def login_user
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user]
@current_user = FactoryGirl.create(:user)
@current_user.roles << Role.first
sign_in @current_user
User.current_user = @current_user
@user = @current_user
@ability = Ability.new(@current_user)
end
end
Sto usando devise e cancan e ho seguito le loro guide. test. Credo che i miei utenti abbiano effettuato l'accesso e abbiano la possibilità di visualizzare l'azione dell'indice.
Cosa posso fare per far passare i test?
- UPDATE 1 -
Controller cod:
class NasController < ApplicationController
before_filter :authenticate_user!
load_and_authorize_resource
respond_to :js
def index
if params[:location_id]
...
else
@nas = Nas.accessible_by(current_ability).page(params[:page]).order(sort_column + ' ' + sort_direction)
respond_to do |format|
format.html # show.html.erb
end
end
end
Ehi. Ciò fallisce ancora. Provato prima, ho anche provato a ripetere la creazione della posizione. Non capirlo Lo stesso test passa in un altro controller. – simonmorley
È qualcosa nel controller che impedisce di visualizzare l'indice se la tabella naz è vuota? –
No, e ho provato a rimuovere sia i filtri Idea che Cancan. E sostituendo la ricerca con @nas = Nas.all Per ogni evenienza. Frustrante! – simonmorley