2016-04-14 3 views
1

私は次のテストがありますSimple Formからのエラーメッセージを確認するためにCapybaraを使用するには?

b.use :full_error, wrap_with: { tag: 'span', class: 'help-block' } 

とモデルpost .RB:config/initializers/simple_form_bootstrap.rbはこれを持って、完全なエラーメッセージを持つために

<%= simple_form_for(post) do |f| %> 
    # post passed to simple_form_for is @post 
    <%= f.input :title %> 
    <%= f.input :content %> 
    <%= f.button :submit, class: 'button' %> 
<% end %> 

scenario 'with invalid attributes' do 
    click_button 'Create Post' 
    save_and_open_page 
    expect(page).to have_content 'Post has not been created.' 
    expect(page).to have_content 'Title can\'t be blank.' 
    expect(page).to have_content 'Content can\'t be blank.' 
end 

_form.html.erbを:

class Post < ActiveRecord::Base 
    validates :title, :content, presence: true 
end 

私はrspecを実行して、私が取得:

expected to find text "Title can't be blank." in "Post has not been created. new post * TitleTitle can't be blank * ContentContent can't be blank" 

save_and_open_pageショー:

<div class="form-group string required post_title has-error"> 
    <label class="string required control-label" for="post_title"> 
    <abbr title="required">*</abbr> Title 
    </label> 
    <input class="string required form-control" type="text" value="" name="post[title]" id="post_title" /> 
    <span class="help-block">Title can&#39;t be blank</span> 
</div> 

はなぜカピバラは<label><span>の間に空白を考慮していませんか?

+0

あなたはカピバラの仕様で完全停止しています:「タイトルは空白ではありません。」というエラーメッセージは、フルストップがないことを示しています: 'TitleTitleは空白にすることはできません'あなたの仕様からそれを削除し、それは通過する必要があります。 –

+1

ああ、私!はい、そうでした。私はメッセージの最後の期間を見ていませんでした。私は 'TitleTitle can not ... 'しか見ることができませんでした。ありがとう!私はあなたの答えを受け入れることができるようにこれにお答えしたいですか? :) – user3097405

+1

heh - 私は同じことを自分でやりました。それが私がそれを探すのを知っている理由です;) –

答えて

0

ちょっとした間違いのようです。あなたのカピバラの仕様でフルストップを持っている:

expect(page).to have_content `Title can\'t be blank.' 

エラーメッセージがフルストップがないことを示しているのに対し:

TitleTitle can't be blank 

はあなたのスペックからそれを削除し、それが通過しなければなりません:)

関連する問題