1
我是rspec的新手,我想了解如何編寫一些特定的測試。如何編寫特定的rspec測試?需要的建議...
背景:
- 我測試西納特拉應用
- 相應的應用連接到多個數據庫
- 我定義的用戶名/這些數據庫爲環境變量的密碼,我引用這些變量在代碼中。
我有工作測試,所以我知道如何測試環境變量的存在。
我是這樣做的:
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沒有設置環境變量。失敗的測試的結果看起來如下:
[email protected]:~/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!
問:我寫這篇文章的測試(S)更好,這樣我可以看到哪些環境變量沒有定義怎麼辦。
謝謝。
我嘗試過,並且無法使其正常工作。我收到的基本錯誤是「nil:NilClass(NoMethodError)」的未定義方法域,這表明@dm超出了範圍?我已經在'12'之前的頂部塊中定義了它'12(之前的所有)做 13 @dm = C :: DomainManager.new 14' – David
爲什麼不能這樣工作@jmdeldin – David
@David:變量定義在''之前'塊只在'it'塊中可用。然而,RSpec只是Ruby代碼,所以你可以在頂部定義你的實例變量。我用一個例子更新了我的答案。 – jmdeldin