繁体   English   中英

使用qunit测试javascript函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM