1

我正在使用 Rails、Rspec(用于测试)和 capybara 创建一个多语言 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”得到:“/en/posts/new”(使用==)

我想使用“new_post_path”之类的东西,而不是“/en/posts/new”

当我使用这样的东西时描述的主要问题

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 回答