Rspec: как создать метод для вызова и создать все макеты? - PullRequest
0 голосов
/ 24 апреля 2018

Я использую 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

1 Ответ

0 голосов
/ 25 апреля 2018

Вы должны просто использовать общий контекст для этого https://relishapp.com/rspec/rspec-core/v/3-4/docs/example-groups/shared-context

Это похоже на shared_example, но для контекста, который вы хотите

Тем не менее, вы получили точно такой же параметр длямножество тестов, рассмотрите возможность их объединения в одном контексте

Наслаждайтесь:)

...