简体   繁体   English

RSpec 测试关注 Rails 6

[英]RSpec testing concern with Rails 6

I have a concern using Kaminari gem but don't sure how to test it.我担心使用 Kaminari gem,但不知道如何测试它。 I have read about share_examples but it seem to not go through.我已经阅读了有关share_examples的信息,但似乎没有通过 go。

Here is my code这是我的代码

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规范/控制器/关注/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

In my controller where I include this concern在我的 controller 中,我包含了这个问题

require 'rails_helper'

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

And I'm getting this error when running spec运行规范时出现此错误

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

ArgumentError:
  Could not find shared examples "LoadMoreConcern"

Anyone know which I should do or could point me to some resources?任何人都知道我应该做什么或可以指出一些资源? Any help is appreciate.任何帮助表示赞赏。

Shared examples are not autoloaded.共享示例不会自动加载。 Either add it to some place that is loaded for all examples by your rails_helper or require it explicitly where you need it.要么将它添加到你的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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM