4
votes

I have a very basic RSpec/Capybara Rails test written down but i keep on getting that expect method is undefined

my spec/features/signin_spec.rb:

  require "rails_helper"
  RSpec.feature "the signin process", :type => :feature do
    before :each do
      User.create(:email => "[email protected]", :password => "password")
    end

    scenario "signs me in" do
      visit "/users/sign_in"
      within("#new_user") do
        fill_in "Email", :with => "[email protected]"
        fill_in "Password", :with => "password"
      end
      click_button "Log in"
      expect(page).to have_content "successfully"
    end
  end

rails_helper:

This file is copied to spec/ when you run 'rails generate rspec:install'

  ENV['RAILS_ENV'] ||= 'test'
  require 'spec_helper'
  require File.expand_path('../../config/environment', __FILE__)
  require 'rspec/rails'

  ActiveRecord::Migration.maintain_test_schema!

  RSpec.configure do |config|
    config.include Devise::TestHelpers, type: :controller
    config.fixture_path = "#{::Rails.root}/spec/fixtures"
    config.use_transactional_fixtures = true
    config.infer_spec_type_from_file_location!
  end

spec_helper:

    require 'capybara/rspec'
    RSpec.configure do |config|
      config.include Capybara::DSL
      config.expect_with(:rspec) { |c| c.syntax = :should }
      config.expect_with :rspec do |expectations|
        expectations.include_chain_clauses_in_custom_matcher_descriptions = true
      end
      config.mock_with :rspec do |mocks|
        mocks.verify_partial_doubles = true
      end
   =begin
      config.filter_run :focus
      config.run_all_when_everything_filtered = true
      config.disable_monkey_patching!
      if config.files_to_run.one?
        config.default_formatter = 'doc'
      end
      config.profile_examples = 10
      config.order = :random
      Kernel.srand config.seed
    =end
    end
3
what is rails_helper, dont you have a spec_helper? - apneadiving
It includes spec_helper: - user1166419
Have you turned off support for the expect syntax in your rspec configuration ? (Check spec_helper.rb / rails_helper.rb ) - Frederick Cheung

3 Answers

12
votes

Adding :expect to this in spec_helper removed the error

config.expect_with :rspec do |c|
    c.syntax = [:should, :expect]
end

https://www.relishapp.com/rspec/rspec-expectations/docs/syntax-configuration#disable-expect-syntax

Thank you for your help @apneadiving and Frederick

0
votes

Just replace

expectations.syntax = :should

with

expectations.syntax = [:should , :expect]

in your spec_helper.rb

0
votes

just replace

 expectations.syntax = :should

with

expectations.syntax = [:should , :expect]

In your spec_helper.rb