You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jasmine自定义匹配器中获取Spy的名称

在Jasmine 2.0自定义匹配器中获取Spy的名称

别担心,这个问题很好解决!在Jasmine 2.x版本里,每个Spy对象都内置了一个identity属性,它正好存储着你创建Spy时定义的名称——不管是通过spyOn监听对象方法生成的方法名,还是用jasmine.createSpy手动指定的自定义名称,都能通过这个属性拿到。

直接修改你的代码示例,把错误消息里的占位符替换成spy.identity就可以了:

var customMatchers = {
  toDoSomething: function(util, customEqualityTesters) {
    return {
      compare: function(spy) {
        var comparison = {};
        comparison.pass = testSomeCondition(spy);
        
        if (!comparison.pass) {
          // 直接使用spy.identity获取Spy的名称
          comparison.message = "Expect " + spy.identity + " to do something";
        }
        
        return comparison;
      }
    }
  }
};

beforeEach(function() {
  jasmine.addMatchers(customMatchers);
});

补充说明:

  • 如果你是用spyOn(myObj, 'myMethod')创建的Spy,spy.identity的值就是myMethod;
  • 如果你是用jasmine.createSpy('myCustomSpy')创建的独立Spy,spy.identity的值就是myCustomSpy;
  • 这个属性是Jasmine内部为Spy实例维护的,不需要你额外配置,直接调用即可。

这样你的错误消息就能准确显示Spy的名称,让测试失败时的提示更清晰啦!

内容的提问来源于stack exchange,提问作者mpasko256

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:43:10