2017-05-04 14 views
0

現在、rspecとの統合テストを行っています。私は上の問題を抱えているテストはかなりsympleです:テスト環境でフラッシュが表示されない

問題は、開発中に、気づきフラッシュメッセージである

require 'rails_helper' 

feature 'Accounts' do 
    scenario 'creating an account' do 
    visit root_path 
    click_link 'Get Started' 
    fill_in 'Name', with: 'Test' 
    click_button 'Create account' 
    save_and_open_page 
    success_message = 'Your account has been successfully created' 
    expect(page).to have_content(success_message) 
    end 
end 

sign_up_spec.rb

def create 
    @account = Account.new(account_params) 
    authorize @account 
if @account.save 
    flash[:notice] = 'Your account has been successfully created' 
    redirect_to :root 
else 
    render :new 
end 

accounts_controller.rb成功したアカウント作成と表示されますが、テストスイートを起動すると、rspecからエラーが表示されます成功のメッセージを発見し、実際にsave_and_open_pageを使用した後、画面に何も表示されていない...

テストログ

Started POST "/accounts" for 127.0.0.1 at 2017-05-04 18:27:20 +0200 
Processing by AccountsController#create as HTML 
    Parameters: {"utf8"=>"✓", "account"=>{"name"=>"Test"}, "commit"=>"Create  account"} 
    [1m[36m (0.1ms)[0m [1mSAVEPOINT active_record_1[0m 
    [1m[35mSQL (0.3ms)[0m INSERT INTO "accounts" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Test"], ["created_at", "2017-05-04 16:27:20.224700"], ["updated_at", "2017-05-04 16:27:20.224700"]] 
    [1m[36m (0.1ms)[0m [1mRELEASE SAVEPOINT active_record_1[0m 
Redirected to http://localhost/ 
Completed 302 Found in 6ms (ActiveRecord: 0.7ms) 
Started GET "/" for 127.0.0.1 at 2017-05-04 18:27:20 +0200 
Processing by PagesController#home as HTML 
    Rendered pages/home.html.erb within layouts/home (5.0ms) 
    Rendered shared/_navbar_home.html.erb (1.1ms) 
    Rendered shared/_flashes.html.erb (0.1ms) 
    Rendered shared/_footer.html.erb (0.6ms) 
Completed 200 OK in 10ms (Views: 9.4ms | ActiveRecord: 0.0ms) 
+0

失敗したテストのtest.log出力を質問に追加します。 –

+0

私の質問をログで編集しました – Viro

+0

ログはルートにリダイレクトされているので、アカウント作成はおそらく成功しています。実際にフラッシュが表示されています(ページにJSが表示されていますか? –

答えて

1

ベストの推測では、あなたの最初のvisit root_pathは「WWWのrack_testドライバのdefault_hostを使用していることです。 example.com 'つまり、セッションのCookie(Flashを含む)が 'example.com'に設定されているため、ドメインが一致しないため、アプリがhttp://localhostにリダイレクトされたときには送信されません。 1つの解決策はredirect_to :root(宛先を決定するためにurl_for(:root)を呼び出して終了する)からredirect_to root_pathに変更することです。これはリダイレクト時に現在のホスト名を使用するだけです。

+0

それはそれでした!実際にdefault_hostパラメータを探していましたが、そこからエラーが出てきていると確信していました。今、魅力のように働きます、もう一度感謝します。 – Viro

関連する問題