我已经查看了 Jasmine 的 toHaveBeenCalledWith 匹配器文档,以了解是否可以为参数传入正则表达式,如果该参数预计为字符串。不幸的是,这是不受支持的功能。还有一个 issue open on github 请求此功能。
我已经深入研究了代码库,我看到了如何在 existing matcher 中实现它。我认为将它实现为单独的匹配器更合适,以便单独捕获抽象。
与此同时,什么可能是一个好的解决方法?
最佳答案
经过一番挖掘,我发现 Jasmine spy 对象具有 calls
属性,而该属性又具有 mostRecent() 函数。这个函数还有一个子属性 args
,它返回一个调用参数数组。
因此,当想要检查字符串参数是否与特定的正则表达式匹配时,可以使用以下序列对调用参数执行正则表达式匹配:
var mySpy = jasmine.createSpy('foo');
mySpy("bar", "baz");
expect(mySpy.calls.mostRecent().args[0]).toMatch(/bar/);
expect(mySpy.calls.mostRecent().args[1]).toMatch(/baz/);
很简单。
关于jasmine - 是否可以将 Jasmine 的 toHaveBeenCalledWith 匹配器与正则表达式一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14841115/