我在试图弄清楚我的应用程序目前正在发生的事情时遇到了一些实际问题。我正在努力确保我可以根据用户用于注册的方法(OAuth 与否)在“编辑个人资料”页面上向用户显示不同的内容。
在浏览器中手动测试时,我只需将 OAuth 属性添加到我的用户模型并对其进行测试,就可以正常工作。
但是,在 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
我的 RSpec 集成测试的完整代码在这里:https ://gist.github.com/2556055
对此的任何帮助将不胜感激。