Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

RUBY – RSPEC NAMEERROR: Did you mean? CategorySerializer

Good Morning. I wanted to understand why when testing my RSPEC, the Categories controller, it is giving the error message below:

An error occurred while loading ./spec/controllers/api/v1/categories_controller_spec.rb.
Failure/Error:
  RSpec.describe CategoriesController, type => :controller do
    describe "GET index" do
      it 'has a 200 status code' do
        get :index
        expect(response.status).to eq(200)
      end
    end
  end

NameError:
  uninitialized constant CategoriesController
  Did you mean? CategorySerializer
# ./spec/controllers/api/v1/categories_controller_spec.rb:3:in `<top (required)>'
# /usr/local/bundle/gems/bootsnap-1.10.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:68:in `load'
# /usr/local/bundle/gems/bootsnap-1.10.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:68:in `load'
No examples found.

Finished in 0.00004 seconds (files took 0.89986 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples

This is my Factorybot

FactoryBot.define do
factory :category do
sequence(:name) { |n| "Category #{n}" }
end
end

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

This is my spec/controllers/api/v1/categories_controller_spec.rb

require 'rails_helper'

RSpec.describe CategoriesController, type => :controller do
  describe "GET index" do
    it 'has a 200 status code' do
      get :index
      expect(response.status).to eq(200)
    end
  end
end

This is my rails_helper.rb

require 'spec_helper'

ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../config/environment', __dir__)

abort("The Rails environment is running in production mode!") if Rails.env.production?
require 'rspec/rails'

require 'simplecov'
SimpleCov.start do
  add_group 'Config', 'config'
  add_group 'Controllers', 'app/controllers'
  add_group 'Libs', 'lib'
  add_group 'Models', 'app/models'
  add_group 'Serializers', 'app/serializers'
  add_group 'Specs', 'spec'
end

Dir[Rails.root.join('spec', 'support', '**', '*.rb')].sort.each { |f| require f }

begin
  ActiveRecord::Migration.maintain_test_schema!
rescue ActiveRecord::PendingMigrationError => and
  puts e.to_s.strip
  exit 1
end

RSpec.configure do |config|
  config.fixture_path = "#{::Rails.root}/spec/fixtures"

  config.use_transactional_fixtures = true

  config.infer_spec_type_from_file_location!

  config.filter_rails_from_backtrace!

  Shoulda::Matchers.configure do |config|
    config.integrate do |with|
      with.test_framework :rspec
      with.library :rails
    end
  end

  config.include Request::JsonHelpers, type: :request
end
module Api
    module V1
    class CategoriesController < ApplicationController
      include ErrorSerializer
      before_action :set_category, only: [:show, :update, :destroy]

      # GET /categories
      def index
        @categories = Category.order("created_at DESC").page(params[:page].try(:[], :number))

        render json: @categories
      end

      # GET /categories/1
      def show
        render json: @category
      end

      # POST /categories
      def create
        @category = Category.new(category_params)
        @category.rental_company = RentalCompany.find(params[:rental_company_id])

        if @category.save
          render json: @category, status: :created
        else
          render json: ErrorSerializer.serialize(@category.errors), status: :unprocessable_entity 
        end
      end

      # PATCH/PUT /categories/1
      def update
        if @category.update(category_params)
          render json: @category
        else
          render json: ErrorSerializer.serialize(@category.errors), status: :unprocessable_entity 
        end
      end

      # DELETE /categories/1
      def destroy
        @category.destroy
      end

      private
        # Use callbacks to share common setup or constraints between actions.
        def set_category
          @category = Category.find(params[:id])
        end

        # Only allow a list of trusted parameters through.
        def category_params
          params.require(:category).permit(:id, :name, :description, :rental_company_id)
        end
    end
  end
end

>Solution :

It seems to me that you forgot to add all the modules of this class. Try to update the spec/controllers/api/v1/categories_controller_spec.rb to:


require 'rails_helper'

RSpec.describe Api::V1::CategoriesController, type => :controller do
  describe "GET index" do
    it 'has a 200 status code' do
      get :index
      expect(response.status).to eq(200)
    end
  end
end
 
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading