gpt4 book ai didi

javascript - 使用 Jasmine 为 JSTree stub AJAX 响应

转载 作者:行者123 更新时间:2023-11-28 08:49:38 24 4
gpt4 key购买 nike

试图帮助一些 friend 为他们的 Javascript 编写单元测试,但遇到了一个我以前从未遇到过的问题。他们在应用程序中非常简单地使用 JStree - 通过 AJAX 调用从服务器加载数据。

    var loadHelpValues = function() {
$('#dhAttrValues').jstree({
json_data: {
ajax: {
type: 'get',
dataType: 'json',
url: function (node) {
if (node == -1) {
return "/Item/treeValue/showTreeRoots";
} else {
return "/Item/treeValue/showTreeChildren?parentId=" + node.attr('valueid') +"&rowId="+node.attr('rowid');
}
},
data: function(n) {
return "dept="+$('#dept').val()+"&attributeId="+$('#dhTitle').data('attributeid');
},
success: function(new_data, textStatus) {
return new_data;
},
error: function(XMLHttpRequest,textStatus,errorThrown) {
item.checkForSessionTimeoutAndRemoveErrors(XMLHttpRequest.responseText);
}
},
progressive_render: true,
progressive_unload: true
},
core: {html_titles:true},
themes: {theme:"apple", dots:false, icons:false},
plugins: ["themes","json_data"]
});

这在浏览器中工作得很好,但我在编写 Jasmine 测试来验证行为时遇到了麻烦。我拥有的是一些最小的假 HTML,我在上面调用了这个函数。我想模拟 AJAX 调用,以便我可以返回一些假数据并验证它是否以适当的格式显示在 div 中(是的 - 我知道这基本上是在测试 JSTree 小部件,但这样我们就可以添加其他行为并在未来测试这些节点上的点击事件)

通常在 Jasmine 中,每当我想删除 AJAX 请求时,我就可以将一些虚假数据放入我的代码中 - 我可以像这样使用一个简单的 spy 。

spyOn($, "ajax").andCallFake(function(params){
params.success(
[
{"data":"Solid", "attr": {"id":"dhValue521f6364fe334d21c3917da6","valueId":"521f6364fe334d21c3917da6","value":"Solid","title":"Solid","selectable":false},"state":""},
{"data":"Polka Dot","attr":{"id":"dhValue521f6364fe334d21c3917da8","valueId":"521f6364fe334d21c3917da8","value":"Polka Dot","title":"Polka Dot","selectable":false},"state":""},
]
)

});

但由于某种原因,这不适用于 JStree - 它仍然不断尝试从我的单元测试中进行真正的 AJAX 调用。我什至已经验证,在 JStree 源代码中,它确实调用 $.ajax 从服务器获取数据,因此这应该可以工作。尝试了我能想到的几乎所有可能的替代方案并到处搜索。

有人能做到吗?或者能够指出我的 AJAX stub 出了什么问题吗?是否是 JStree 被编码为 JQuery Widget 导致了这些问题?

谢谢

最佳答案

查看jasmine-ajax ,这会在较低级别模拟 XHR 请求,并且应该可以工作。完整文档 here

关于javascript - 使用 Jasmine 为 JSTree stub AJAX 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19322798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com