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();