RspecにJSON Expressions ( https://github.com/chancancode/json_expressions ) を使ってゐる。便利かと云ふと便利ではない気がするが、変へる余裕も無いので使ってゐる。
其れなりにJSONの構造をマッチできるのだが、ORができない気がする。できるのかもしれないが、できない気がする。「文字列 若しくは nil」なんてのができない気がする。wildcard_matcherなんて云ふあらゆるものに無条件にマッチするものを、ほいほいとは使ひたくない。とても困る。
JSON Expressionsはマッチに === を使ってゐるので、手製のマッチャーを作ってやる。以下をRSpecのhelperに書く。
# license: Public Domain class OrMatcher def initialize *vs; @vs = vs; end def === target; @vs.any?{|v| v === target }; end end def or_matcher *vs; OrMatcher.new *vs; end
然し面倒なので、or_matcher(/.*/, nil)
とかor_matcher((0..Float::INFINITY), nil)
なんてcodeを書いてゐたりする。
JSV (JSON Schema Validator) を使おう。