2016-11-30 137 views
0
訪問全局JavaScript模塊

我已經創建了一個全球性模塊(我們使用JavaScript,我們不使用節點或角度,這是一個純JavaScript代碼)和我的模塊如下所示:如何茉莉花

var ComponentsModule = (function (kendo) { 
    var addLieferbilanzkreisModalComponent = null; 

    return { 
     getAddLieferbilanzkreisModalComponent: function() { 
      return addLieferbilanzkreisModalComponent; 
     }, 
     registerAddLieferbilanzkreisModalComponent: function(component) { 
      addLieferbilanzkreisModalComponent = component; 
      kendo.bind(component.modal, kendo.observable(component.viewModel)); 
     } 
    }; 

})(kendo); 

它工作正常,但在茉莉花是不確定的。如何在Jasmine中訪問我的模塊?

describe("Components", function() { 
    describe("ComponentsModule: ", function() { 
     it("Should register AddLieferbilanzkreisModalComponent", function() { 
      // Arrange 
      var module = ComponentsModule; // undefined 

      // Act 
      module.registerAddLieferbilanzkreisModalComponent(); 

      // Assert 
      expect(module.getAddLieferbilanzkreisModalComponent()).toBeDefined(); 
     }); 
    }); 
}) 

我們使用ReSharper的,現在運行測試,因此它會自動引用依賴條件(我猜的,因爲到現在爲止所有的測試都跑了,對模塊excepttests)

任何線索?

回答

0

之前,我的解決方案(reach the fiddle here),我想請你注意我的假設:

  • 你用一些預定義 kendo/k變量實例化ComponentsModule在什麼地方,我想,像我一樣在我的代碼 這裏(因爲你的代碼工作,你上面提到的)
  • 如果你的測試代碼是在另一個js文件,就像一個規範,然後確保你有你的依賴(ComponentsModule)腳本運行之前就被實例化。
  • 您的module.registerAddLieferbilanzkreisModalComponent來自測試it實際上應該接受一個參數,如果您在進一步評估它爲toBeDefined。 (根據你的源代碼)

    var kendoVariable = { 
    observable: function(mdl) { 
        return "mdl"; 
    }, 
    bind: function() { 
        console.log("binded"); 
    } 
    }; 
    var ComponentsModule = (function(kendo) { 
        var addLieferbilanzkreisModalComponent = null; 
    
        return { 
        getAddLieferbilanzkreisModalComponent: function() { 
         return addLieferbilanzkreisModalComponent; 
        }, 
        registerAddLieferbilanzkreisModalComponent: function(component) { 
         addLieferbilanzkreisModalComponent = component; 
         kendo.bind(component.modal, kendo.observable(component.viewModel)); 
    } 
    }; 
    
    })(kendoVariable); 
    
    describe("Components", function() { 
        describe("ComponentsModule: ", function() { 
        it("Should register AddLieferbilanzkreisModalComponent", function() { 
        // Arrange 
        var module = ComponentsModule; // undefined 
    
        // Act 
        module.registerAddLieferbilanzkreisModalComponent({ 
         modal: "some modal", 
         viewModel: "some view model" 
        }); 
    
        // Assert 
        expect(module.getAddLieferbilanzkreisModalComponent()).toBeDefined(); 
        }); 
    }); 
    });