gpt4 book ai didi

jquery - 在 qUnit 中测试整个页面重定向

转载 作者:行者123 更新时间:2023-11-28 19:46:00 26 4
gpt4 key购买 nike

我有以下功能

var redirect = function() {
window.location.href = "http://www.google.com";
}

我想用 qUnit 测试这个函数。

问题是,当我调用运行测试的 HTML 文档时,一旦它到达调用 redirect() 的测试,浏览器就会加载 google.com。我想做的是以某种方式模拟 window.location.href,这样它就不会重定向,这样我就可以检查它是否设置为正确的值。

以更可测试的方式重写它是一个可以接受的答案,并且受到欢迎。因为我使用的是 qUnit,所以一些 jQuery 魔法将是合适的,一些老式的重构也是如此。建议为 window.location.href 添加自定义 setter ,但我不知道如何让它工作。

请不要建议更改我的代码的行为。

最佳答案

这是我最终解决它的方法。 giggity.navOnChange 是类似于原始问题中的 redirect 的功能。

代码:

var giggity = giggity || {};

$(document).ready(function() {
$("#branches").change(giggity.navOnChange);
$("#tags").change(giggity.navOnChange);
});

giggity.window = window;

giggity.navOnChange = function() {
giggity.window.location.href = this.value;
};

测试代码:

var giggity = giggity || {};

test("giggity.navOnChange", function() {
var temp = giggity.window
giggity.window = { location: {} };
var mockSelect = {
value: "/link/to/some/branch",
onChange: giggity.navOnChange
}
mockSelect.onChange();
equal(giggity.window.location.href, mockSelect.value);
giggity.window = temp; // restore mocked variable
});

我正在使用 giggity 对象作为我的代码的命名空间。我将 giggity.window 变量指定为指向 window,并通过 giggity.windowwindow 交互。这样,我可以轻松地模拟出对 window 对象的任何操作。我将 giggity.window 指向模拟对象,调用修改 giggity.window 的函数并检查模拟的值。

关于jquery - 在 qUnit 中测试整个页面重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7240667/

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