0

このエラーを理解しようとしています:

ActionView::Template::Error:
       No route matches 
         {:controller=>"evaluations", 
          :action=>"note", 
          :student_group_id=>#  
            <StudentGroup id: 2, 
             name: "Rainbow Class", 
             user_id: 1, 
             created_at: "2013-08-18 10:45:46", 
             updated_at: "2013-08-18 10:45:46", 
             number_of_students: nil, 
             type_of_group: "Adult class (18+)">, 
           :student_id=>nil}

これはブラウザでは問題なく動作しますが、テストでは失敗するだけです。

コードは次のとおりです。

<%= link_to "!", eval_note_path({ student_group_id: @student_group, student_id: @student_group.students.first }) %>

およびテスト - before ブロックにスタブが必要であることはわかっていますが、rspec を自分のやりたいようにする方法がわかりません。SOを調べましたが、スタブは状況に大きく依存しているようで、わかりません:

describe "GET 'index" do

  before(:each) do
    @index = get :index
    @student_group.stub(:students.first).and_return(1)      
  end

  ...

  it "should have an evaluation link" do
    @index
    response.should have_selector('a', 
                                   href: eval_note_path({ 
                                         student_group_id: @student_group, 
                                         student_id: @student
                                         }),
                                   content: "!")
  end

end
4

1 に答える 1

0

試してみてください。動作する@student_group.idはずです。

it "should have an evaluation link" do
    @index
    response.should have_selector('a', 
                                   href: eval_note_path({ 
                                         student_group_id: @student_group.id, 
                                         student_id: @student
                                         }),
                                   content: "!")

ありがとう

于 2013-08-18T11:02:28.267 に答える