【问题标题】:Avoid duplicates in RSpec and VCR避免在 RSpec 和 VCR 中重复
【发布时间】:2020-03-05 12:44:03
【问题描述】:

我正在使用 VCR 使我的规格更快,如下所示:

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 个地方都有几乎相同的规格主体(唯一的区别是卡带名称,因为我需要使用新请求)。有没有办法不与 VCR 重复相同的代码?

具有几乎相同代码的不同规格示例:

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

【问题讨论】:

    标签: ruby-on-rails rspec


    【解决方案1】:

    在盒式磁带中包装多个规格怎么样?

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 2015-04-05
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      • 2015-01-04
      相关资源
      最近更新 更多