【发布时间】:2017-02-03 09:46:09
【问题描述】:
我的模块中有一个函数可以进行 AJAX 调用,成功后它会重定向用户。我想在 Jasmine 中测试该功能,但无法让页面不重新加载。
这是我的功能:
function my_func() {
$.ajax({
// parameters
success: function(data) {
// does something
reloadPage(path);
}
});
}
function reloadPage(path) {
console.log('got here');
window.location.href = path;
}
在我的测试中,我通过以下方式监视重新加载页面功能:
spyOn($, 'ajax').and.callFake(function(options) {
options.success(data);
});
spyOn(my_module, 'reloadPage');
my_module.my_func();
当我运行测试时,我得到了这个:
LOG LOG: 'got here'
Firefox 42.0.0 (Linux 0.0.0) ERROR
Some of your tests did a full page reload!
reloadPage 不应该被间谍代替而不是被调用吗?我已经包含了所有相关的代码部分,只是“字面意思”而已,但是如果您需要我提供更多信息,请告诉我!
【问题讨论】:
-
你试过调换间谍的设置顺序吗?
-
是的,还是同样的错误。
标签: javascript jquery unit-testing jasmine