1

Rails、Rspec (テスト用)、およびカピバラを使用して多言語 CMS を作成しています。

このテストを書いたときに問題が発生しました

it "redirect and create a new post" do
  visit posts_path
  create_new_post = I18n.t('posts.index.create_new_post')
  click_link create_new_post
  current_path.should == new_post_path
end

問題は最後の行にあり、私はこれを期待していました: "/posts/new" got: "/en/posts/new" (==を使用)

「/en/posts/new」ではなく「new_post_path」のようなものを使いたい

このようなものを使用するときに描かれる主な問題

it "redirect to show link" do
  visit posts_path
  page.should have_content 'show'
  click_link 'show'

  current_path.should == post_path(@post)
end

どんな助けでも大歓迎です。

4

1 に答える 1

0

この件に関するいくつかのアイデアについては、この StackOverflow の質問を確認してください。私の好ましい方法は、同じ質問に対するこの回答です。しかし、現在のコードを使用して期待を正しくするために、おそらく次のようにするでしょう (すべてのロケールをテストしたい場合):

I18n.available_locales.each do |locale|

  it "should redirect and create a new post" do
    visit posts_path(locale)
    create_new_post = I18n.t('posts.index.create_new_post')
    click_link create_new_post
    current_path.should == new_post_path(locale)
  end

  it "should redirect to show link" do
    visit posts_path(locale)
    page.should have_content 'show'
    click_link 'show'

    current_path.should == post_path(locale, @post)
  end
end
于 2012-08-26T13:01:14.390 に答える