【问题标题】:RSpec testing concern with Rails 6Rails 6 的 RSpec 测试问题
【发布时间】:2021-03-10 10:43:01
【问题描述】:

我担心使用 Kaminari gem,但不知道如何测试它。我已经阅读了有关 share_examples 的信息,但似乎没有通过。

这是我的代码

module LoadMoreConcern
  extend ActiveSupport::Concern

  protected
  
  def load_more(objects)
    objects.present? ? !objects.last_page? : false
  end

spec/controllers/concern/load_more_concern_spec.rb

require 'rails_helper'

RSpec.shared_examples 'LoadMoreConcern' do |klass|
  describe '#load_more' do
    let_it_be(:talk) { FactoryBot.create(:talk) }

    it "should return false if object is not present or is last page" do
      expect(subject.load_more(talk)).to be false
    end
  end
end

在我包含此问题的控制器中

require 'rails_helper'

RSpec.describe TalksController, type: :controller do
  it_behaves_like 'LoadMoreConcern'
end

运行规范时出现此错误

An error occurred while loading ./spec/controllers/talks_controller_spec.rb.
Failure/Error: it_behaves_like 'LoadMoreConcern'

ArgumentError:
  Could not find shared examples "LoadMoreConcern"

有人知道我应该做什么或可以指出一些资源吗?任何帮助表示感谢。

【问题讨论】:

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


    【解决方案1】:

    共享示例不会自动加载。要么将其添加到您的 rails_helper 为所有示例加载的某个位置,要么在您需要的地方明确要求它。

    require 'rails_helper'
    require 'spec/controllers/concern/load_more_concern_spec.rb'
    
    RSpec.describe TalksController, type: :controller do
      it_behaves_like 'LoadMoreConcern'
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-16
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 2014-05-18
      相关资源
      最近更新 更多