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

Javascript 如何在jasmine测试用例中模拟$(element).show和ko.mapping.fromJS?,javascript,knockout.js,jasmine,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 metho

这是我的密码:

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).show
ko.mapping.fromJS

这是一个较老的问题,但我最近遇到了相同的问题。如果您正在使用karma运行jasmine脚本,请将引导库添加到karma.config文件的“文件”下

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配置文档:

您的问题本身很有趣,但作为一个相关的旁白:我建议将对视图相关插件(如
modal
)的依赖性转移到
bindingHandler
)上。但要评论您的实际问题:您是否正在使用
modal
fn加载库?如果我尝试将您的代码转换为repro,那么一切都可以正常工作:请参阅(特别是它的外部资源)。