2016-03-11 54 views
1

Rails 4.2,rspec 3.4.0rails,rspec:當頁面上沒有Flash信息時,測試功能

當我用手創建'問題'時,flash通知就在這個位置。但是,當我用rspec去,閃存散列是空的,並且通知不存在。我試圖在測試環境中運行rails server以確保手動執行時的所有工作。它是。我最近的項目測試在相同的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 %> 
+0

您的規格將進入主頁;問題的創造真的會發生什麼,當你點擊「英語」? –

+0

我的根是問題的索引。 '英語'鏈接將語言環境更改爲'en'。而且,當我以用戶身份進行操作時,所有這一切都很有效 –

回答

0

好,長期研究後,我已經找到了答案。

爲了在我的項目中實現i18n,我使用了Ryan Bates的138個railscast。從那裏,我把這個功能:

application_controller.rb

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

字符串:host => "localhost:3000"引起麻煩。評論它和中提琴! - 所有工作正常再次