测试验证ruby子类实现策略方法

时间:2011-09-12 11:31:08

标签: ruby validation rspec subclass strategy-pattern

我正在实现一个简单的策略模式(在ruby中第一次),我想编写一个测试来确保每个子类都实现关键的策略方法。所以,我有这样的事情:

class SearchTools::MusicSearcher
  def find_artists
    raise 'Abstract method called'
  end
end

class SearchTools::LastFMSearcher < MusicSearcher
  def find_artists(search_phrase)
    # get artists from lastfm's restful api
  end
end

class SearchTools::DatabaseSearcher < MusicSearcher
  def find_artists(search_phrase)
    # look in database for artists
  end
end

class SearchTools::Search

  def initialize(searcher)
    @searcher = searcher
  end

  def find_artists(search_phrase)
    @searcher.find_artists(search_phrase)
  end

end

我目前正在使用rspec,factory_girl和shoulda-matchers进行测试。有谁知道我是如何做到这一点的?

干杯!

P.S。我习惯用C#指定文字“界面”,这就是为什么我要看看我可以在ruby中使用什么来强制执行每个策略的通用界面......

1 个答案:

答案 0 :(得分:0)

我希望它会像,

it "should respond to find_artists method" do
  o = SearchTools::LastFMSearcher.new
  o.respond_to?(:find_artists).should be_true
end