如何在对象分配

时间:2018-03-28 05:34:29

标签: javascript unit-testing jasmine karma-runner

到目前为止,我一直在使用以下构造:

spyOn(ClassToSpy, NameOfMethodToSpy);

... 期望(ClassToSpy.NameOfMethodToSpy).toHaveBeenCalledWith(ObjectToCompare);

但是现在我想检查对导出对象的调用而不是导出的函数。这是否也可以使用karma / jasmin?

更具体一点: 我有一个服务,它提供了对全局本机浏览器窗口对象的引用:

 get nativeWindow(): any {
    return window;
  }

我正在测试的代码使用此返回的窗口对象执行以下操作:

this.winRef.nativeWindow.location.href  = clean_uri;

现在我想确保该位置的href属性已收到新网址。因为在最后一次调用中没有涉及函数,所以我不能使用来自karma / jasmine的toHaveBeenCalledWith-construct。

1 个答案:

答案 0 :(得分:0)

如果可以监视普通的导出对象,我不确切地知道你问题的答案。我想这是不可能的。但是你已经提到你已经有了一个服务来覆盖对窗口对象的访问。因此,我建议您为此服务添加一些getter / setter方法以访问该对象。通过这种方式,您可以使用spyOn(...)的众所周知的行为来实现函数。