rails,rspec:测试功能时页面上没有flash消息

时间:2016-03-11 17:23:39

标签: ruby-on-rails rspec

Rails 4.2,rspec 3.4.0

当我用手创建'问题'时,闪光通知就在那里。但是当我使用rspec时,flash hash是空的并且通知不存在。我试图在测试环境中运行rails服务器以确保在手动操作时所有工作。它是。我最近的项目测试与相同的gemset工作得很好。所以我发展这是rspec错误。现在我不知道该去哪里。

question_controller.rb

def create
  @question = Question.new(question_params)

  if @question.save
    flash[:notice] = t('question.created')
    redirect_to @question
  else
    flash[:alert] = t('question.not_created')
    render 'new'
  end
end

功能/ creating_questions_spec.rb

require 'rails_helper'

feature 'Creating Questions' do
  before do
    visit '/'
    click_link 'English'
  end
  scenario "can create question" do
    fill_in 'question_body', with: 'What is this?'
    click_button t('question.create')
    expect(page).to have_content(t 'question.created')
  end

rspec输出

Failure/Error: expect(page).to have_content(t 'question.created')
  expected to find text "Question has been created." in "Home Sign in Sign 
  up Русский English What is this?

布局

<% flash.each do |key, value| %>
  <div class='flash' id='<%= key %>'>
    <%= value %>
  </div> <% end %>

<%= yield %>

1 个答案:

答案 0 :(得分:0)

好的,经过长时间的研究,我找到了答案。

为了在我的项目中实施i18n,我使用了由Ryan Bates进行的138次转播。从那里我采取了这个功能:

<强> application_controller.rb

def default_url_options(options={})
  {:host => "localhost:3000",
   :locale => I18n.locale}
end

字符串:host => "localhost:3000"会导致麻烦。评论它和中提琴! - 一切正常再次