2016-01-21 2 views
3

Я добавил к контроллеру метод import, и он отлично работает, когда я тестирую его вручную с моего сайта, но он не работает в rspec. Вот то, что мой тест выглядит следующим образом:Тест контроллера Rspec не попал в действие моего контроллера

require 'spec_helper' 

describe PropertiesController do 
    let!(:user) { FactoryGirl.create(:user) } 

    before :each do 
    sign_in user 
    end 

    describe "should upload user properties" do 
    before do 
     post :import, spreadsheet: fixture_file_upload("/files/property_upload_template.xlsx") 
    end 

    it "should have created records" do 
     expect(Property.count).to eq 3 
     # Some other assertions 
    end 
    end 
end 

Когда я добавляю puts заявления в моем импорта действий, в том числе и на самой первой линии, ни один из них не по-видимому, вызваны. Тест не порождает ошибок, кроме как отказ от утверждений. Точно так же, когда я смотрю на файл test.log, все, что происходит, - это создание моего тестового пользователя (и отправляется письмо с подтверждением разработки), но не кажется, что действие по импорту когда-либо ударяется. Кажется, что тестовый сервер распознает маршрут, но на самом деле он не выполняет действие.

Есть что-то не так с моей тестовой конфигурацией?

ответ

3

Я ударил головой в течение пары часов, но я просто понял это. Мне нужно было confirm the user in my user factory. Думаю, с тех пор, как я включил модуль confirmable в разработке, и пользователь не был подтвержден, он молчал, не позволяя мне аутентифицироваться ...

... Было бы неплохо, если бы rspec/rails/dev произвёл какой-то вид ошибки, указывающей на проблему здесь.

Для полноты картины, я добавляю в коде для подтверждения пользователя в версии FactoryGirl во время этого письма:

FactoryGirl.define do 
    factory :confirmed_user, :parent => :user do 
    after(:create) { |user| user.confirm! } 
    end 
end 
Смежные вопросы