gpt4 book ai didi

javascript - 使用 Jasmine 进行单元测试,模拟构造函数

转载 作者:行者123 更新时间:2023-11-29 10:12:12 27 4
gpt4 key购买 nike

我正在使用 Jasmine 对 JavaScript 进行单元测试,但遇到了一些问题。

我有一个大文件要测试,它有很多依赖项,而这些依赖项有自己的依赖项。由于上述依赖关系,我想尽我所能。问题就在这里。我如何模拟一个构造函数,使其包含属于它的方法?

假设我正在测试 Map 类的方法 createMap:

createMap 方法中,它使用

调用 Layers 类构造函数
var layers = new Layers()

我正在监视它使用

spyOn(window, 'Layers').and.callThrough()

这很好用,但稍后在 createMap 方法中调用 layers.addLayer() 其中 addLayer 的方法图层类。问题是,因为我模拟了 Layers 调用,所以它无法识别 addLayer 方法。

有没有办法模拟它以便它包含被调用类的所有方法,或者我唯一的选择是 stub 整个 Layers 类还是不模拟它?

或者什么是处理这个问题的好方法?我试过 spyOn(Layers, 'addLayer') 但它说找不到方法 addLayer

如果有点困惑,我很抱歉。我不知道该怎么问。

最佳答案

IMO,没有必要监视 window,因为你可以很容易地 shadow the variable在本地范围内创建一个同名的 spy 对象:

describe('Map', function () {
var Layers;

beforeEach(function () {
Layers = function () {
// alternatively, you could move this to Layers.prototype
this.addLayers = jasmine.createSpy('Layers#addLayers');
};
});

/* ... */
});

如果你想要自动模拟和使用 CommonJS 模块,你可以尝试 Jest构建在 Jasmine 之上的框架。

关于javascript - 使用 Jasmine 进行单元测试,模拟构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31159696/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com