javascript - 如何监视 Jasmine 中的原始函数而不是虚拟函数以进行 JavaScript 测试?

标签 javascript jasmine

我查看了有关监视 Jasmine 中的函数的其他问题,但我的疑问没有得到解答。我打算使用 andCallThrough 来跟踪 src 脚本中的原始函数。这就是我所拥有的:

describe("My Test to spy :", function() {                                       
    var mySpy = jasmine.createSpy(window, "login");                             
    beforeEach(function(){
        mySpy();
    });

    it("Expects login() will be called", function(){                               
      expect(mySpy).toHaveBeenCalled();                                         
    });    
});

所以这个测试通过是因为它是被调用的 spy ,对吗?不是该功能的原始实现。因此,如果我使用 mySpy.andCallThrough() 则会出现错误。这些文档都是关于链接对象和方法的。没有任何功能。需要一些帮助。

最佳答案

问题是您使用 createSpy 而不是 spyOncreateSpy 将创建一个新的 spy ,因此您无法对其使用 andCallThrough,因为没有可调用的函数。使用 spyOn 将用 spy 替换现有函数并将旧函数保存在 spy 中。因此,当您使用 andCallThrough 时,它将调用这个旧方法。

您可以使用createSpy,但是您必须传递名称和原始函数:

jasmine.createSpy('someName', window.login)

当你使用 `spyOn' 时,你必须传递一个包含函数的对象和函数的名称:

jasmine.spyOn(window, 'login')

关于javascript - 如何监视 Jasmine 中的原始函数而不是虚拟函数以进行 JavaScript 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17864964/

相关文章:

angularjs - Jasmine 根据规范的多期望与根据规范的单期望

javascript - 将模块包含到另一个nodeJS文件中

angularjs - 使用 Angular 设置 Karma/Jasmine 时出现问题

javascript - Fabric.js 文本转换不起作用

javascript - URL 编码的 Javascript 问题

angularjs - 你如何模拟 $http 给出 404?

angular - 测试在构造函数上使用 observable 的方法

javascript - 如何测试销毁范围

javascript - 基本 require.js 示例

javascript - jQuery 扩展多个对象具有相同的功能