【发布时间】:2012-08-07 03:44:28
【问题描述】:
假设我有一个实用函数,为了简单起见(实际情况复杂且无关紧要),它返回当前窗口的查询字符串。
var someUtilityFunction = () {
return window.location.search.substring(1);
};
现在我想在 qUnit 中对这个函数进行单元测试(不确定测试工具是否相关):
test('#1 someUtilityFunction works', function () {
// setup
var oldQS = window.location.search;
window.location.search = '?key1=value1&key2=value2&key3=value3';
var expectedOutput = 'key1=value1&key2=value2&key3=value3';
// test
equals(someUtilityFunction(),
expectedOutput,
'someUtilityFunction works as expected.');
// teardown
window.location.search = oldQS;
});
这里的问题是,将window.location.search 设置为不同的查询字符串会导致页面重新加载,实际上进入了无限请求循环。有什么方法可以模拟出 window.location 对象而不对someUtilityFunction 函数进行任何更改?
【问题讨论】:
标签: javascript unit-testing query-string qunit