-1

嘿,所以我写了一个新功能并通过 Spork 运行我的测试服,但我的视图测试失败了。这将是我第一次看视图测试,所以有点混乱。

我收到以下错误

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

它正在测试的视图看起来像这样(我使用 sass 和 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'

然后点击基本上用我在模型中计算出的新值填充字段的ajax

$("#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 的链接而无法呈现?有人发现类似的问题吗?

4

2 回答 2

1

RSpec / Capybara 等默认不支持 Ajax。原因是 javascript 仅在浏览器中起作用。您是否使用 Selenium 或其他允许测试 javascript 的框架?

于 2013-03-18T11:55:45.567 回答
0

所以我和我旁边有胡子的朋友聊了聊,看看我提出这个问题是否正确,他发现我的路线正在寻找一个 id 的问题

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

并且测试没有给出,ID因为它没有保存工厂化类

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

抱歉,错误非常不透明。

于 2013-03-18T12:12:01.953 回答