我正在向我的應用添加更多rspec測試,並且想要測試/lib/scoring_methods.rb中的ScoringMethods模塊。所以我添加了一個/ spec/lib目錄並在那裏添加了scoring_methods_spec.rb。我需要spec_helper,併成立了描述塊像這樣:爲庫模塊添加rspec測試似乎沒有取得預期和匹配
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
describe ScoringMethods do
describe "should have scorePublicContest method" do
methods = ScoringMethods.instance_methods
methods[0].should match(/scorePublicContest/)
end
end
現在methods[0]
是一個String,並沒有與正則表達式匹配的公共方法的名稱問題。 「spec_helper」的相對路徑是正確的。
問題是整個安裝程序似乎沒有使用rspec庫。 運行示例產量:
./spec/lib/scoring_methods_spec.rb:7: undefined method `match' for Spec::Rails::Example::RailsExampleGroup::Subclass_1::Subclass_1:Class (NoMethodError)
...
整個期望和匹配器支持似乎缺少。爲了測試我的假設,我通過將「is_instance_of」替換爲「is_foobar_of」來更改了工作幫助程序規範。該測試只是失敗,並說「is_foobar_of」不是目標對象的一種方法;它,這整個Spec :: Rails :: Example ...層次結構不存在。
我試過使用其他匹配器。我試過了「be_instance_of」和其他一些。看來我沒有正確包含rspec庫。
最後,ScoringMethods是一個模塊,就像Helpers是模塊一樣。所以我認爲可以測試一個模塊(而不是類,如控制器和模型)。
我非常感謝您對我做錯了什麼的想法。也許有更有效的方法來測試庫模塊?謝謝!
馬克, 非常感謝您的回覆。你是絕對正確的!我沒有「it」塊。非常感謝, 彼得 – 2009-06-16 13:23:59