Избегайте дубликатов в RSpe c и VCR - PullRequest
1 голос
/ 05 марта 2020

Я использую видеомагнитофон, чтобы сделать свои спецификации намного быстрее, как показано ниже:

RSpec.describe NewCollaborator, type: :service do
  let(:call) { described_class.new(user, repo).call }
  let(:user) { 'user@example.com' }
  let(:repo) { 'github-repo' }

  context 'when jira board is provided' do
    it 'create jira ticket with new user and github repo',
       :aggregate_failures, vcr: { cassette_name: 'new_collaborator' } do
      expect(call).to eq(true)
      expect(WebMock).to have_requested(:post, 'https://company_board.atlassian.net/rest/api/2/issue')
    end
  end
end

Дело в том, что у меня почти одинаковое тело спецификаций в более чем 5 местах (единственное отличие заключается в название кассеты, потому что мне нужно использовать новый запрос). Есть ли способ не повторять один и тот же код с видеомагнитофоном?

Образец различных спецификаций с почти одинаковым кодом:

RSpec.describe NewRepo, type: :service do
  let(:call) { described_class.new(user, repo).call }
  let(:user) { 'user@example.com' }
  let(:repo) { 'github-repo' }

  context 'when jira board is provided' do
    it 'create jira ticket of new repo',
       :aggregate_failures, vcr: { cassette_name: 'new_repo' } do
      expect(call).to eq(true)
      expect(WebMock).to have_requested(:post, 'https://company_name.atlassian.net/rest/api/2/issue')
    end
  end
end

1 Ответ

0 голосов
/ 05 марта 2020

как насчет упаковки спецификаций муфелей внутри кассеты?

VCR.use_cassette 'new_repo' do
  it 'create jira ticket of new repo' do
     ...
  end

  it 'create jira ticket of new repo' do
     ...
  end
end
...