如何在jasmine测试用例中模拟$(element).show和ko.mapping.fromJS?

时间:2014-10-23 14:04:37

标签: javascript knockout.js jasmine

这是我的代码:

TestViewModel.prototype.edit = function(pId, pData) {
    self.modalId = '#header';
    $(self.modalId).modal('show'); //error
    self.id(ko.mapping.fromJS(pData).id()); //how to mock this ?
}        

这是Jasmine测试用例:

  it("calling edit method", function() {
        var modalId = $("#cc-accessControlUserModal");
        var EditData = {id:"i10060"};
        spyOn($.fn, 'modal');
        self.TestViewModel.edit("i10060",EditData);
  });

但是,这会给我:

  

错误:modal()方法不存在

所以,问题是:如何在Jasmine测试用例中模拟$(element).showko.mapping.fromJS

1 个答案:

答案 0 :(得分:0)

这是一个较旧的问题,但我最近遇到了同样的问题。如果您使用karma运行jasmine脚本,请将bootstrap库添加到karma.config文件的files下。

files: [
      'node_modules/es6-shim/es6-shim.js',
      'node_modules/reflect-metadata/Reflect.js',
       ...
      'node_modules/jquery/dist/jquery.min.js',
      'node_modules/jquery-mask-plugin/dist/jquery.mask.js',
      'node_modules/jquery-ui/ui/core.js',
      'node_modules/jquery-ui/ui/datepicker.js',

      //Append dependencies to this list
      'node_modules/bootstrap/js/modal.js',
...
]

在我的情况下,因为我不需要整个引导程序库,所以我只包含了模态文件。

这是karma配置文档:karma doc