Node JS Jasmine用jasmine.any()testing多个types
我正在使用茉莉花( v2.2.0 )进行testing,我试图窥探一个方法,预计将调用第一个参数的具体数据,第二个未知types。
我熟悉间谍和间谍 .toHaveBeenCalledWith()
语法,并joinjasmine.any()
它可能看起来像这样:
expect(my.spy).toHaveBeenCalledWith('startMenu', jasmine.any(String));
但我无法find一种方法来处理几种types。 我正在寻找的是一种方法来执行相同的行动,其中第二个参数是任何types,以及当第二个参数是某些types之一,如:
// Any type is okay: expect(my.spy).toHaveBeenCalledWith('startMenu', jasmine.any()); // String or number only: expect(my.spy).toHaveBeenCalledWith('startMenu', jasmine.any(String OR Number));
不用说,前面的例子不是工作代码,他们正是我正在寻找正确的语法。
另一个说明,我发现jasmine.anything()
几乎可以处理任何事情,但未能undefined
。
任何forms的帮助,非常感谢。
我还没有find一种方法来做到这一点,只是使用jasmine.any
但你可以实现类似的自定义匹配器:
toBeStringOrNumber : function () { return { compare : function (actual, expected) { return { pass : (typeof actual == 'string' || typeof actual == 'number'), message : actual + ' is not a string or a number' }; } }; }
然后在实际参数上调用它:
expect(my.spy).calls.argsFor(0)[1].toBeStringOrNumber();