2015-04-21 2 views
0

Я пытаюсь обновить свой индексный указатель с помощью флажков. Логика работает так, как ожидалось, но моя спецификация контроллера не срабатывает, и я не понимаю, почему. Мне интересно, может быть что-то не так с моим синтаксисом. Инкремент работает с моим тестом, но не с спецификацией контроллера. Соответствующая часть теста заключается в следующем:Спецификация контроллера не увеличивает счетчик, как ожидалось

describe "PUT complete" do 
    it "it archives a diagnostic info report" do 
     diagnostic = FG.create(:diagnostic_info) 
     puts DiagnosticInfo.all.size 
     expect { 
     put :complete, :diagnostic_ids => [diagnostic.id] 
     }.to change(DiagnosticInfo.all, :size).by(-1) 
     response.should redirect_to(admin_diagnostics_path) 
    end 
    end 

тест неисправного я получаю это:

1) Admin::DiagnosticsController PUT complete it archives a diagnostic info report 
    Failure/Error: put :complete, :diagnostic_ids => [diagnostic.ids] 
    NoMethodError: 
     undefined method `ids' for #<DiagnosticInfo:0x0000000827c678> 
    # ./spec/controllers/admin/diagnostics_controller_spec.rb:53:in `block (4 levels) in <top (required)>' 
    # ./spec/controllers/admin/diagnostics_controller_spec.rb:52:in `block (3 levels) in <top (required)>' 
    # -e:1:in `<main>' 
+1

Можете ли вы показать нам свой диагностический контролер? –

+1

Ошибка сбоя говорит о 'diagnostic.ids', а ваш код -' diagnostic.id' ... Где-то есть ошибка. – pierallard

ответ

0

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

describe "PUT complete" do 
    it "it archives a diagnostic info report" do 
     diagnostic = FG.create(:diagnostic_info) 
     expect { 
     put :complete, :diagnostic_ids => [diagnostic.id] 
     }.to change(DiagnosticInfo.all, :count).by(-1) 
     response.should redirect_to(admin_diagnostics_path) 
    end 
    end 
Смежные вопросы