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,那么一切都可以正常工作:请参阅(特别是它的外部资源)。