Qunit测试ViewModel

时间:2013-06-16 08:17:46

标签: javascript knockout.js qunit

我有一个ViewModel定义如下:

(function(ko, myApp) {
myApp.HomeViewModel = function () {
    this.message = ko.observable("Helloy.....");
    this.toolBarIsVisible = ko.observable(true);
    this.isDataDirectoryManager = ko.observable(true);
};



myApp.HomeViewModel.prototype = {
    sayHi: function () {
        this.message("World");
    }
};

ko.applyBindings(new myApp.HomeViewModel());
}(window.ko, window.myApp || {}));

如何编写实例化myApp.HomeViewModel实例的qunit测试。

由于 马丁

1 个答案:

答案 0 :(得分:0)

您需要在测试文件中包含您的应用代码。测试代码可能是这样的:

    (function (ko, myApp) {

        var vm;
        module( "HomdeViewModel", {
            setup: function() {
                vm = new myApp.HomeViewModel();
            },
            teardown: function() { }
        });

        test('Can create HomdeViewModel', function () {
            ok(vm instanceof myApp.HomeViewModel);
        });

        test('Sets default values', function () {
            strictEqual(vm.message(), 'Helloy.....');
            ok(vm.toolBarIsVisible());
            ok(vm.isDataDirectoryManager());
        })

        test('Can change message', function () {
            vm.sayHi();
            strictEqual(vm.message(), 'World');
        });

    })(window.ko, window.myApp)

这里有一个例子:http://jsfiddle.net/danne567/ptW9k/

的jsFiddle