【问题标题】:Rspec: how to create a method to call and create all mocks?Rspec:如何创建一个方法来调用和创建所有模拟?
【发布时间】:2018-04-24 19:35:05
【问题描述】:

我正在使用 Rspec 测试我的 rails 应用程序和 FactoryBot(工厂女孩的新名称)来创建模拟。但是在每个文件中我需要调用很多模拟。几乎就是这样,调用一些模拟,创建一个用户,登录并确认这个用户。我可以创建一个方法来调用所有这些模拟、登录并确认用户吗?那我只需要调用这个方法。

这是我在每个 rspec 文件中调用的内容:

let!(:nivel_super) { create(:nivel_super) }
let!(:gestora_fox) { create(:gestora_fox) }
let!(:user_mock) { create(:simple_super) }
let!(:super_user) { create(:super_user, 
  nivel_acesso_id: nivel_super.id, gestora_id: gestora_fox.id) }

let!(:ponto_venda) { create(:ponto_venda1) }
let!(:tipo_op) { create(:tipo_op) }

before(:each) do
  @request.env["devise.mapping"] = Devise.mappings[:user]
  super_user.confirm
  sign_in super_user
end

我在想这样的事情:

def call_mocks
  # put the code above
end

比在每个 rspec 文件中:

RSpec.describe OrdemPrincipalsController, type: :controller do
  describe 'Ordem Principal tests' do

    call_mocks

    it 'go to new page' do
      # my test
    end

  end
end

【问题讨论】:

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


    【解决方案1】:

    您应该为此简单地使用共享上下文 https://relishapp.com/rspec/rspec-core/v/3-4/docs/example-groups/shared-context

    它与 shared_example 类似,但上下文是你想要的

    尽管如此,很多测试的设置完全相同,请考虑将它们放在相同的上下文中

    享受:)

    【讨论】:

    • 谢谢!这正是我想要的。我将上下文文件放在上下文文件夹中。工作正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 2011-12-09
    相关资源
    最近更新 更多