2016-11-30 133 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(); 
        }); 
    }); 
    });