Home > Blockchain >  Rails rspec wrong expected result
Rails rspec wrong expected result

Time:08-10

I'm having problem with using rspec in ruby-on-rails app

my users_spec.rb

require 'rails_helper'

RSpec.describe 'Get /', type: :request do
  it 'test / get method' do
    expect(response).to have_http_status(:success)
    expect(response).to include('index')
  end
end

my routes.rb

Rails.application.routes.draw do
  get "/" => "users#index"
end

my users_controller.rb

class UsersController < ApplicationController
  def index
  end
end

my index.erb

<h1>index</h1>

when I run "bundle exec rspec". , I get error like this

.F

Failures:

  1) Get / test / get method
     Failure/Error: expect(response).to have_http_status(:success)
       expected the response to have a success status code (2xx) but it was 
     # ./spec/requests/users_spec.rb:5:in `block (2 levels) in <main>'

Finished in 0.11204 seconds (files took 5.18 seconds to load)
2 examples, 1 failure

Failed examples:

rspec ./spec/requests/users_spec.rb:4 # Get / test / get method

and I can't catch where is wrong..

CodePudding user response:

Your spec is not correct. Your spec is not actually calling the endpoint. You need to add a get "/" call, that will actually call the endpoint

require 'rails_helper'

RSpec.describe 'Get /', type: :request do
  it 'test / get method' do
    get "/" #this is the missing line; this actually makes the request
    expect(response).to have_http_status(:success)
    expect(response).to include('index')
  end
end
  • Related