2015-06-05 5 views
0

я использую RSpec, чтобы проверить мое приложение у меня есть маршрут с идентификатором, как этоттестирование маршрут с параметром в контроллере

match 'promotevuln/moderate/:id' => 'moderate#promotevuln' 

и здесь есть код, который я испытываю с

RSpec.describe ModerateController, :type => :controller do 

    describe '#promotevuln' do 
    context 'access controle' do 
     before :each do 
     @vuln=NewVulnerability.new(:description=>'description',:description_eng=>'description',:title=>'title',:title_eng=>'title_eng',:short_description=>'short',:short_description_eng=>'short') 
     end 

     it 'must be connected' do 
     get :promotevuln,{:id=>@vuln.id} 
     expect(response).to redirect_to(:controller => 'account', :action => 'login') 
     end 

но я не смог передать это условие, и он всегда возвращает это сообщение об ошибке

Failure/Error: get :promotevuln,{:id=>@vuln.id} 
    ActionController::RoutingError: 
     No route matches {:controller=>"moderate", :action=>"promotevuln"} 
+0

Какая ценность '@ vuln.id', прежде чем вы назовете' get'? –

+0

Это int NewVulnerability enherit от ActiveRecord :: Base, так что это идентификатор уязвимости в базе данных – Safouen

+0

Но что это такое ** значение **? ноль? 1? 'Яблоко'? –

ответ

0

Yo u're создает новую функцию NewVulnerability, но вы не сохраняете ее в базе данных, поэтому ее id - это nil.

+0

да, это спасибо – Safouen

+0

Приятно слышать. Несколько простых инструкций 'puts' очень эффективны для отладки! –