我正在尝试使用 Capybara 为我的应用程序编写一些集成测试。要让应用程序显示正确的输出,登录用户必须具有特定角色。这就是我卡住的地方。
现在,登录模拟看起来像这样。在spec_helper.rb
我有:
# Trying to configure Capybara to play nice with Omniauth
Capybara.default_host = 'http://example.org'
# Enable omniauth testing mode
OmniAuth.config.test_mode = true
OmniAuth.config.mock_auth[:google] = OmniAuth::AuthHash.new({
:provider => 'google',
:uid => '1337',
:info => {
'name' => 'JonnieHallman',
'email' => 'jon@test.com'
}
})
然后,在测试本身中,让用户登录我只是这样做:
before do
visit root_path
click_link "Log In"
end
现在,save_and_open_page
显示用户确实已登录,但正在查看不正确的输出,因为他们没有角色。
我怎样才能给这个模拟用户一个角色?我应该什么时候这样做?(显然,在他们登录之前——但我认为现在的结构方式是,用户在登录之前不存在于数据库中。对吧?)
任何提示都将受到欢迎。