2014-03-14 29 views
0
def some_method condition 
    actual = [1,2,3] 
    expected = include(1) 
    matcher = lambda {|condition| 
      if condition == "YES" 
       return RSpec::Matcher.should 
      else 
       return RSpec::Matcher.should_not 
      end} 
    actual.matcher.call(condition) expected 
end 

如何根據解析到方法中的條件動態地生成應該還是不應該的匹配器?如何調用一個動態的Rspec匹配器應該或不應該

回答

1

我想你的意思做的是:

def some_method condition 
    actual = [1,2,3] 
    expected = include(1) 
    matcher = lambda {|condition| 
      if condition == "YES" 
       :should 
      else 
       :should_not 
      end} 
    actual.send(&matcher.call(condition), expected) 
end 

,這樣就會將調用實際結果的方法shouldshould_not

在一個側面說明,我有相當透視時,這將是一個不錯的主意...單元測試應該是確定性的,可讀的困難了,這種想法使他們少兩個...

+0

謝謝你非常。我同意你不應該使用它,我只是好奇如何去做。當我剛剛嘗試'actual.send(matcher.call(condition),expected)'時,它不起作用。現在我明白了爲什麼。非常感謝您的幫助。我很感激。 (用例在Cucumber步驟定義中爲同一步驟傳遞「SHOULD」或「SHOULD_NOT」並處理它。 – rstormsf

相關問題