[英]Testing javascript function with qunit
我按照下面的JavaScript文件中声明一个ViewModel。
(function(root) {
var ko = root.ko;
var vm = {
modelType: ko.observable(),
message : ko.observable(),
toolbarIsVisible : ko.observable(true),
isDataDirectoryManager : ko.observable(true),
listItems : ko.observableArray(),
ko.applyBindings(vm);
};
}(window));
在我的单元测试js文件中,我引用qunit.js和带有vm的js文件。 如何构造测试以检查(例如)toolbarIsVisible的值。 我似乎无法在测试中编写正确的语法来引用vm变量。
谢谢马丁
它是一个闭包,因此从测试中获取它的唯一方法是模拟ko.applyBindings并从那里获取vm值。
但我真的认为您应该像这样公开您的VM
(function(ko, MyApp) {
MyApp.ViewModel = {
modelType: ko.observable(),
message : ko.observable(),
toolbarIsVisible : ko.observable(true),
isDataDirectoryManager : ko.observable(true),
listItems : ko.observableArray()
};
ko.applyBindings(ViewModel);
}(window.ko, window.MyApp = window.MyApp || {}));
编辑:另一个技巧是不使用对象文字,而是使用原型对象
MyApp.ViewModel = function() {
this.modelType = ko.observable();
};
MyApp.ViewModel.prototype = {
foo: function() {
}
};
编辑:Qunit示例
test("When model is valid", function() {
var model = MyApp.ViewModel();
model.value("Valid value");
equal(model.canSave(), true, "You should be able to save");
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.