我想在我的请求测试中登录用户,但无法使其正常工作。我没有使用Device。
这是我的代码
规格/支持/ spec_test_helper.rb
module SpecTestHelper
def log_user_in(user)
post login_path, params: {session: {email: user.email, password: 'password'}}
end
end
规格/请求/ like_a_table_spec.rb
require 'rails_helper'
RSpec.describe 'LikeATable', type: :request do
it 'will put table in wish list' do
log_user_in(create(:user))
expect(page).to have_content('My profile')
end
end
这给了我错误 水豚:: ElementNotFound: 无法找到xpath“/ html”
答案 0 :(得分:0)
您在不支持的请求规范中使用Capybara会话方法 - https://www.relishapp.com/rspec/rspec-rails/docs/request-specs/request-spec。您不应该将Capybara :: DSL包含在类型&rs;请求'的规格中。但是,如果需要,你可以包括Capybara :: RSpecMatchers,但你需要根据字符串调用它们
$('#perform-new-search').click(function() {
$('#first-name-search').val('hello');
$('#last-name-search').val('');
$('#results-states option:selected').val('Select State');
})
原因是您无法将expect(response.body).to have_content('My profile')
方法与get/post/put/delete
混合使用。 page
以及任何其他Capybara :: DSL方法仅在您使用page
加载页面时才相关。