Тестирование драгоценных камней с помощью Rspec - PullRequest
4 голосов
/ 27 июля 2011

Я написал собственный Ruby Gem для подключения к системе аутентификации и авторизации нашей компании и начинаю разрабатывать модульные тесты для этого драгоценного камня.

В нашем приложении rails Gem можно настроить через environment.rb и пользовательский файл инициализатора и yaml, содержащий значения конфигурации.

Мне нужно перевести конфигурацию драгоценного камня в рельсы, чтобы проверить автономный драгоценный камень. Как мне перевести это в Rspec для выполнения интеграционного тестирования ??

Конфигурация драгоценного камня в рельсах

# environment.rb
MyGem.configure do |config|
  config.url = MY_CONFIG ['url']
  config.application_name = MY_CONFIG ['app_name']
  config.application_id = MY_CONFIG ['app_id']
  config.logger = Rails.logger
  config.log_level = :debug


# Rails config/initalizers/load_config.rb
# Custom config file loading automatically done via initializers
MY_CONFIG = YAML.load_file("#{Rails.root.to_s}/config/my_config.yml")[Rails.env]

# config/my_config.yml
defaults: &defaults
  url: http://url/to/service
  app_name: my app
  app_id: 1

development:
  <<: *defaults

test:
  <<: *defaults

production:
  <<: *defaults

конец

1 Ответ

6 голосов
/ 28 июля 2011

Вот простой проект, где вы можете увидеть, как вы это сделаете: множитель

Прежде всего, если вы делаете управление драгоценными камнями самостоятельно, пожалуйста, не используйте вспомогательные инструменты, такие как ювелир , чтобы сделать это для вас.Установите ювелирный драгоценный камень ( gem install jeweler ) и после того, как он будет установлен, создайте свой драгоценный камень:

jeweler --rspec your_gem_name

С этим, он собирается установить драгоценный камень-скелетодин основной файл (где вам потребуются ваши необходимые gem-файлы) и папка spec.

В папке spec есть spec_helper.rb , где и живет наша конфигурация, что я и сделал:

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
$LOAD_PATH.unshift(File.dirname(__FILE__))
require 'rspec'
require 'multiplier'

# Requires supporting files with custom matchers and macros, etc,
# in ./support/ and its subdirectories.
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}

RSpec.configure do |config|

end

Multiplier.configure do |config| #these are the only lines I added myself
  config.multiplier 4
end

Итак, здесь находится конфигурация для нашего драгоценного камня, но вы можете даже сделать это для каждой спецификации, если вам это нужно.Но если вы хотите использовать единый конфиг для всех спецификаций, это то место, куда вы должны его поместить.

...