Rspec:如何创建调用和创建所有模拟的方法?

时间:2018-04-24 19:35:05

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

我正在使用Rspec测试我的rails应用程序和FactoryBot(工厂女孩的新nome)来创建模拟。但是在每个文件中我需要调用很多模拟器。它几乎是某种东西,调用一些模拟,创建用户,登录并确认该用户。我可以创建一个方法来调用所有这些模拟,登录并确认用户吗?然后我只需要调用这个方法。

以下是我在每个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

1 个答案:

答案 0 :(得分:1)

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

它类似于shared_example,但对于您想要的上下文

尽管如此,你在很多测试中得到了完全相同的设置,考虑将它们放在同一个上下文中

享受:)