我想在使用RSpec的RoR中測試創建一個自定義匹配器。具有多個參數的RSpec和自定義匹配器
define :be_accessible do |attributes|
attributes = attributes.is_a?(Array) ? attributes : [attributes]
attributes.each do |attribute|
match do |response|
response.class.accessible_attributes.include?(attribute)
end
description { "#{attribute} should be accessible" }
failure_message_for_should { "#{attribute} should be accessible" }
failure_message_for_should_not { "#{attribute} should not be accessible" }
end
end
我希望能夠寫出像在我的測試如下:
...
should be_accessible(:name, :surname, :description)
...
但與上述定義的匹配,我必須通過符號的陣列,而不是分隔符號逗號,否則測試只檢查第一個符號。
任何想法?
下面是一個應該匹配你的第一個需要的答案:http://stackoverflow.com/a/4643289/582863。無論如何,我對你的意圖很好奇......你只是想減少你的rspec測試文件中的行數,還是測試你的模型屬性的複雜可訪問性? – Saaman 2013-04-21 21:44:32
你提供的鏈接的問題是,這不是一個「常規」的def方法,所以我不能使用*。回答你的問題,我只是想減少我的rspec的線:) – 2013-04-21 21:51:44