gpt4 book ai didi

javascript - 使用初始实例化类的 Jasmine 测试

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

我在我的 JavaScript 中使用揭示模式和初始类实例化。我也在使用 Jasmine 来测试这个类,但需要一种方法来在每次测试运行之前重置 myNamespace.myViewModel 的状态(这是一个简单的示例,但想象一个具有多个变量的复杂 View 模型)。

这是一个示例类:

myNamespace.myViewModel = (function(ko, $, window){
var init = function(){},
name = 'bob',
nameSetter = function(value){ name = value; };
return {
Init: init,
Name: name,
NameSetter: nameSetter
};
}(ko, $, window));

在 Jasmine 中,我从:

describe("VM Specs", function () {
'use strict';
var vm;
beforeEach(function(){
// the vm isn't re-created since it is a "static" class in memory
vm = myNameSpace.myViewModel;
});
it("should set name", function(){
vm.NameSetter('joe');
expect(vm.Name === 'joe').toBeTruthy();
});
it("should have the default state, even after the other test ran", function(){
expect(vm.Name === 'bob').toBeTruthy();
});
});

有办法吗?

最佳答案

你不能。因为该模式所做的就是创建一个新对象,该对象在闭包中绑定(bind)了一些变量。因此,即使您在您的应用程序中使用它,您也无法中继该对象的状态,因为您无法创建它的新版本。此外,class 一词并未正确描述此模式,因为您无法从中创建新实例。因此,您应该问问自己,在这种情况下,这是否适合您。

关于javascript - 使用初始实例化类的 Jasmine 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14341761/

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