Jasmine 为类中的函数创建间谍

Jasmine 为类中的函数创建间谍,jasmine,spy,Jasmine,Spy,我将Jasmine添加到一个大型项目中,以便将测试添加到该项目的javascript中。通常我使用Ruby,我对这里的元素有点不熟悉 我有一个类,它有一个函数,我想为它创建一个spy,以便它在我的一个测试中返回一个特定的值。以下是代码摘要: class @MyKlass current_location = -> window.location.host verify_domain: () -> domain_filter = current_locatio

我将Jasmine添加到一个大型项目中,以便将测试添加到该项目的javascript中。通常我使用Ruby,我对这里的元素有点不熟悉

我有一个类,它有一个函数,我想为它创建一个spy,以便它在我的一个测试中返回一个特定的值。以下是代码摘要:

class @MyKlass
  current_location = ->
    window.location.host

  verify_domain: () ->
    domain_filter = current_location()
    domain_list = /example\.com/i
    @valid_domain = domain_filter.match(domain_list)?
那么我该怎么做呢

  it("verifies domains", function() {
    spyOn(MyKlass, 'current_location').and.returnValue("example");
    var myKlass = new MyKlass();
    expect(myKlass.verify_domain()).toEqual(true);
  });

结果证明,这是类实例上的一个函数——我在代码中不知怎么漏掉了它。以下是简化的解决方案:

describe('MyKlass', function() {
  myKlass = null

  beforeEach(function() {
    myKlass = new MyKlass()
  });

  it('returns true for our domains', function() {
    spyOn(myKlass, 'verify_domain').and.returnValue(true);
    expect(myKlass.verify_domain()).toBe(true);
  });