現時点では、私のアプリケーションで何が起こっているのかを実際に調べようとしています。私は、ユーザがサインアップ(OAuthかどうか)に使用した方法に応じて、「プロフィールの編集」ページに異なるコンテンツを表示できるようにしようとしています。RSpecはページ上の要素に誤検出を投げます
これは、ユーザーモデルにOAuth属性を追加してテストするだけで、ブラウザで手動でテストするときに正しく機能するようになっています。
しかし、RSpecではこれを正しくテストすることができません。実際、私がどの要素をページ上で探すかを問わず、実際にそこに存在すると主張します。私のRSpecの統合テストのための
describe "edit user" do
let(:user) { FactoryGirl.create(:user) }
before { sign_in user }
describe "correct edit account options shown to normal users" do
before do
visit edit_user_registration_path(:user)
end
it { should have_selector('h2', text: 'Edit User') }
it { should have_selector('input', id: 'user_names')}
it { should have_selector('input', id: 'user_email', value: user.email) }
it { should have_selector('input', id: 'user_password') }
it { should have_selector('input', id: 'user_password_confirmation') }
it { should have_selector('input', id: 'user_current_password') }
it { should have_selector('input', type: 'submit') }
end
describe "correct edit account options shown to oauth users" do
before do
user.update_attributes!(:oauth => true)
visit edit_user_registration_path(:user)
end
it { should have_selector('h2', text: 'Edit User') }
it { should have_selector('input', id: 'user_names')}
it { should_not have_selector('input', id: 'user_email') }
it { should_not have_selector('input', id: 'users_password') }
it { should_not have_selector('input', id: 'users_password_confirmation') }
it { should_not have_selector('input', id: 'user_current_password') }
it { should have_selector('input', type: 'submit') }
end
end
完全なコードはここにある:https://gist.github.com/2556055
このため任意の助けを心からいただければ幸いです。
は、すみません、私はhave_selectorは、彼らが実際に存在しない場合でも、あなたがページ上の任意の要素を持っていることを報告していることを正しく理解していますか? – Flexoid
パスヘルパー関数は ':user'ではなく' user'で呼び出さなければなりません。 – zetetic