私はrspecが初めてで、特定のテストの書き方を理解しようとしています。
バックグラウンド:
- Sinatra アプリをテストしています
- そのアプリは複数のデータベースに接続します
- これらのデータベースのユーザー名/パスワードを環境変数として定義し、これらの変数をコードで参照しています。
私は動作テストを行っているので、環境変数の存在をテストする方法を知っています。
これが私がそれをした方法です:
27 it "should know the username for each SUBDOMAIN in the list" do
28 @dm.domains.each do |dom|
29 ENV['C_USERNAME_' + dom].nil?.should eq(false)
30 end
31 end
私が言ったように、テストは機能します。唯一の問題は、失敗したときに、環境変数が設定されていない dom が不明であることです。失敗したテストの結果は次のようになります。
dhaskew@Air1:~/code/projects/rules$ rake spec
/Users/dhaskew/.rvm/rubies/ruby-1.9.3-p194/bin/ruby -S rspec ./spec/c_spec.rb ./spec/main_spec.rb ./spec/routes_spec.rb
..F*.....*
Pending:
My Site Domain Manager should know the password for each SUBDOMAIN in the list
# Not yet implemented
# ./spec/c_spec.rb:33
My Site GET '/rules/SUBDOMAINS' should test all subdomains
# Not yet implemented
# ./spec/routes_spec.rb:28
Failures:
1) My Site Domain Manager should know the username for each SUBDOMAIN in the list
Failure/Error: ENV['C_USERNAME_' + dom].nil?.should eq(false)
expected: false
got: true
(compared using ==)
# ./spec/c_spec.rb:29:in `block (4 levels) in <top (required)>'
# ./spec/c_spec.rb:28:in `each'
# ./spec/c_spec.rb:28:in `block (3 levels) in <top (required)>'
Finished in 0.05095 seconds
10 examples, 1 failure, 2 pending
Failed examples:
rspec ./spec/c_spec.rb:27 # My Site Domain Manager should know the username for each SUBDOMAIN in the list
rake aborted!
質問: どの環境変数が定義されていないかを確認できるように、このテストをより適切に作成するにはどうすればよいですか。
ありがとう。