2013-12-18 7 views
2

У меня возникли проблемы с тестированием моих нескольких контроллеров с использованием Rspec, особенно тех, которые используют пространства имен в своих маршрутах. Кто-нибудь есть идея, почему это происходит и как я могу это исправить? Это сводит меня с ума.Проблемы с Rspec с контроллерами с именами

Вот моя ошибка. Сбой/Ошибка: получить 'шоу' ActionController :: RoutingError: Нет маршрута матчей {: контроллер => "сообщества/производители",: действие => "показать"}

Вот мой контроллер.

class Community::VendorsController < ApplicationController 
    def show 
    @vendor = Vendor.find_by_uuid(params[:uuid]) 
    render :file => "#{Rails.root}/public/404.html", :status => 404 if @vendor.nil? 
    end 
end 

Вот моя спецификация.

describe Community::VendorsController do 
    let(:vendor){FactoryGirl.create(:vendor)} 
    before(:each) do 
    @user = FactoryGirl.create(:vendor_single_user) 
    sign_in @user 
    end 

    it 'should return 404 if no vendor found' do 
    Vendor.stub(:find_by_uuid => nil) 
    get 'show' 
    response[:status].should == 404 
    end 
end 

Вот маршруты.

namespace :community do 
    get ':uuid/intake' => 'vendors#show' 
    put ':uuid/intake/' => 'vendors#update' 
    get ':uuid/check-email' => 'vendors#check_email' 
    end 

ответ

1

Ваш маршрут ожидает параметр :uuid, но в вашей спецификации вы не поставляет этот параметр. Обновите свои спецификации для прохождения в параметре uuid:

describe Community::VendorsController do 
    ... 

    it 'should return 404 if no vendor found' do 
    Vendor.stub(:find_by_uuid => nil) 
    get 'show', uuid: uuid # Replace uuid with your object's uuid 
    response[:status].should == 404 
    end 
end 
Смежные вопросы