2013-03-18 78 views
0

嘿,所以我寫了一個新的功能,並通過Spork跑我的測試西裝,我有一個失敗的視圖測試。這將是我第一次看視圖測試,所以它有點令人困惑。Rspec路由錯誤,當重新ajax

我收到以下錯誤

ActionView::Template::Error: 
    No route matches {:controller=>"employment_equity", :action=>"update_percentage_of_black_youth", :method=>:put, :scorecard_id=>123456, :id=>nil} 

的觀點是測試看起來像這樣(我用的青菜和HAML使#不是註釋它引用的ID標籤)

- if current_scorecard.base_charter_is? :transport_public_sector 
    .left 
    #percentage_of_employees_that_are_black_youth_input= f.field :percentage_of_employees_that_are_black_youth, :class => :percentage 
    .left 
    .auto_sum_link= link_to('Percentage from Details', update_percentage_of_black_youth_path(current_scorecard.id, @employment_equity.id), :method => :put, :remote => true) 

正如你所看到的,我將:remote_true添加到我的link_to,這樣我就可以得到ajax來填寫那個提交的文件。問題是它抱怨沒有路線。

當我有它!

match '/scorecards/:scorecard_id/employment_equity/:id/update_percentage_of_black_youth', :controller => 'employment_equity', :action => 'update_percentage_of_black_youth', :method => :put, :as => 'update_percentage_of_black_youth' 

,然後打在外地基本上填滿了新的價值我在模型

$("#percentage_of_employees_that_are_black_youth_input input").val(<%= @employment_equity.percentage_of_employees_that_are_black_youth %>).effect("highlight", {color: "#C3EC97"}, 3000); 

這在我的開發環境的所有作品制定出Ajax和我的單元測試所有的工作都無法弄清楚爲什麼它不會呈現因爲傳遞給ajax的鏈接?任何一個發現了類似的問題?

回答

0

所以我跟我的脖子beardy朋友我旁邊,看看我是正確的冒充這個問題,他想通了,我的路線一直在尋找一個id

match '/scorecards/:scorecard_id/employment_equity/:id/update_percentage_of_black_youth' 

和測試wasnt給人的問題ID因爲它不是保存factoried類

No route matches {:controller=>"employment_equity", :action=>"update_percentage_of_black_youth", :method=>:put, :scorecard_id=>123456, id=>nil} 

遺憾的錯誤是超級不透明。

1

在RSpec/Capybara等默認情況下不支持Ajax。原因是JavaScript只在瀏覽器中運行。您是否使用Selenium或其他允許測試javascript的框架?

+0

我不知道嗎?我們正在使用RSpec和Spork? – TheLegend 2013-03-18 12:06:47

+0

是的,RSpec和Spork不會爲您提供測試ajaxy函數的能力。如果你想測試這部分的應用程序 – muttonlamb 2013-03-18 12:08:04

+0

感謝您的信息,你一定想看看硒或茉莉花!我不認爲我們的任何js都經過測試,我不知道有測試它的軌道方式。你搖滾襪子 – TheLegend 2013-03-18 12:13:06