既存の API フレームワークをテストするためのスタンドアロンの rspec テスト スクリプトを作成します。それはかなりうまく機能しますが、Rakefile で YAML ファイル (uri リンク、電子メール) から値を割り当てる必要があるか、Rakefile のコードが次のようになるという問題が見つかりましCONSTANT
た$global_var
。
require 'rubygems'
require 'bundler/setup'
require 'yaml'
require 'rspec/core/rake_task'
task :default => :spec
desc 'Running rspec test'
task :spec, :option do |t, opt|
choice = opt[:choice]
if choice == "production"
puts 'Test running on production'
VAR = YAML::load(File.read(File.expand_path("../config/prod_variable.yml", __FILE__)))
elsif choice == "development"
puts 'Test running on development'
VAR = YAML::load(File.read(File.expand_path("../config/dev_variable.yml", __FILE__)))
end
puts VAR['URI'] #=> print out the value correctly
RSpec::Core::RakeTask.new do |task|
test = Rake.application.original_dir
task.fail_on_error = false
task.rspec_opts = '--format documentation --color'
end
end
端末で rake コマンドを実行すると、rspec がVAR
定数値の検索に失敗しました。これはrspecからのエラーメッセージです
Failures:
1) ApiTest Testing API platform for GET request
Failure/Error: @var = ApiTest.new(VAR['URI'] ,
NameError:
uninitialized constant VAR
# ./rspec_test/api_test/api_test_get_spec.rb:8:in `block (2 levels) in <top (required)>'
2) ApiTest Testing API platform for POST request
Failure/Error: @zat = ApiTest.new(VAR['URI'] ,
NameError:
uninitialized constant VAR
# ./rspec_test/api_test/api_test_post_spec.rb:7:in `block (2 levels) in <top (required)>'
これを機能させる方法はありますか?VAR定数やグローバル変数から値を取得したいのですが、Rubyが値を代入できていないようです。