Posted at

RspecのJSON ExpressionsでNullableなマッチャー (若しくはORマッチャー) を作る

More than 5 years have passed since last update.

RspecにJSON Expressions ( https://github.com/chancancode/json_expressions ) を使ってゐる。便利かと云ふと便利ではない気がするが、変へる余裕も無いので使ってゐる。

其れなりにJSONの構造をマッチできるのだが、ORができない気がする。できるのかもしれないが、できない気がする。「文字列 若しくは nil」なんてのができない気がする。wildcard_matcherなんて云ふあらゆるものに無条件にマッチするものを、ほいほいとは使ひたくない。とても困る。

JSON Expressionsはマッチに === を使ってゐるので、手製のマッチャーを作ってやる。以下をRSpecのhelperに書く。

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)なんてcodeを書いてゐたりする。

JSV (JSON Schema Validator) を使おう。

-> http://c4se.hatenablog.com/entry/2014/07/08/220848