Я пытаюсь написать контрольный пример RSpe c для метода, который вызывает другой метод из другого класса - PullRequest
0 голосов
/ 03 февраля 2020
# NodePackageAssetFile

require 'asset_ingester/asset_type/base_asset_type'
require 'asset_ingester/helpers/github_asset_type_helpers'

module AssetIngester
  module AssetType
    class NodePackage < BaseAssetType
      def self.asset_type
        'node_package'
      end

      def self.search_terms
        ["'registry' in:file filename:.npmrc "]
      end

      # Public: Retrieves all node package assets from Github
      #
      # Returns an array of github asset objects sorted by full name
      def self.assets
        Helpers::GithubAssetTypeHelpers.assets(asset_type, search_terms)
      end
    end
  end
end

# Rspec I tried for asset method

 describe '#assets' do
    let(:nodePackage) do
      [id: 131690,
        name: 'acm-care-management-js',
        full_name: 'AcuteCaseManagementUI/acm-care-management-js',
        owner_name: 'AcuteCaseManagementUI',
        owner_url: 'https://github.cerner.com/api/v3/users/AcuteCaseManagementUI',
        owner_avatar_url: 'https://avatars.github.cerner.com/u/4095?',
        url: 'https://github.cerner.com/api/v3/repos/AcuteCaseManagementUI/acm- 
 care-management-js',
        html_url: 'https://github.cerner.com/AcuteCaseManagementUI/acm-care-management-js',
        asset_type: 'node_package']
      end
    it 'returns the node package assets' do
      allow(AssetIngester::Helpers::GithubAssetTypeHelpers).to receive(:assets).with('node_package',["'registry' in:file filename:.npmrc "]).and_return(nodePackage)
      key = AssetIngester::AssetType::NodePackage.assets
      expect(key).to eq(nodePackage)
    end
  end

Я пытался протестировать метод ресурсов таким способом. Тест проходит, но я хочу знать, является ли это правильным способом сделать это. Если этот подход полностью неверен, пожалуйста, предложите правильный способ сделать это. Я попытался использовать RSpe c -Stub для проверки метода активов класса NodePackage.

1 Ответ

1 голос
/ 04 февраля 2020

Использовать ожидаемые сообщения от RSpe c Mocks

Как правило, RSpe c поддерживает вызовы методов тестирования с ожиданиями сообщения . Ожидания сообщений работают на удвоение теста, но вы можете прочитать больше о полных возможностях в RSpe c Документация Mocks .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...