-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 に答える