0

以下のように、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 と js ファイルを vm. (たとえば) toolbarIsVisible の値を検査するテストを作成するにはどうすればよいですか。テストで vm 変数を参照する正しい構文を記述できないようです。

ありがとうマーティン

4

1 に答える 1

0

これはクロージャーであるため、テストから取得する唯一の方法は、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 || {}));

編集: もう 1 つのヒントは、オブジェクト リテラルを使用するのではなく、次のようなプロトタイプ オブジェクトを使用することです。

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");
});
于 2013-06-14T08:50:42.570 に答える