我正在测试的API可能会返回许多字段的字符串或数字。我已经能够使用自我验证表达式来检查这种行为:{ a: '#? typeof _ === "number" || typeof _ === "string"' }
。
有没有(或应该有)使用空手道模糊匹配标记的方法?像{ a: '#string OR #number'}
?
不,我认为这是IMO一个设计糟糕的API,我不想膨胀语法来解决这些问题。
请注意,您可以按照以下方式使其更加优雅,因此您可以编写此函数一次,将其定义为“全局”并重复使用您的内容:
* def isNumOrStr = function(x){ return typeof x === 'number' || typeof x === 'string' }
* def foo = { a: 1 }
* match foo == { a: '#? isNumOrStr(_)' }
* def bar = { a: 'z' }
* match bar == { a: '#? isNumOrStr(_)' }