没有设计

时间:2017-04-19 18:14:16

标签: rspec capybara ruby-on-rails-5

我想在我的请求测试中登录用户,但无法使其正常工作。我没有使用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”

1 个答案:

答案 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加载页面时才相关。