Jasmine 如何在主干木偶单元测试中模拟window.location.href?

Jasmine 如何在主干木偶单元测试中模拟window.location.href?,jasmine,Jasmine,我有一个函数,当在 cookie,重定向到指定为以下内容的某个页面: window.location.href导致单元测试失败 您的一些测试进行了整版重新加载 我做了一些研究,发现我必须在中模拟$window对象 单元测试以防止在运行测试时重新加载页面 有谁能提出一个解决办法吗?提前谢谢 编辑:这个问题是相同的,但现在问题不同了。我有 发现在测试用例中模拟$window对象会 阻止错误发生。有谁能建议一条去的路吗 去吧 最好用location对象提供的setter方法替换location.hre

我有一个函数,当在 cookie,重定向到指定为以下内容的某个页面:

window.location.href导致单元测试失败

您的一些测试进行了整版重新加载

我做了一些研究,发现我必须在中模拟$window对象 单元测试以防止在运行测试时重新加载页面

有谁能提出一个解决办法吗?提前谢谢

编辑:这个问题是相同的,但现在问题不同了。我有 发现在测试用例中模拟$window对象会 阻止错误发生。有谁能建议一条去的路吗 去吧


最好用location对象提供的setter方法替换
location.href

如果希望用户能够返回历史记录,请使用
location.assign()
,或
location.replace()
以避免浏览器历史记录条目

现在您可以在测试中模拟这些函数了。可以使用手动覆盖,也可以使用类似的模拟库

测试可能看起来像:

it('should call correct URL', () => {
  const expected = '<URL>';

  sinon.stub(location, 'assign');

  // other setup if required

  showEnrollRoute();

  expect(location.assign).toHaveBeenCalledWith(expected);

  location.assign.restore();
});
it('应该调用正确的URL',()=>{
预期常数=“”;
sinon.存根(位置,“分配”);
//其他设置(如需要)
showEnrollRoute();
expect(location.assign).与(expected)一起被调用;
location.assign.restore();
});
it('should call correct URL', () => {
  const expected = '<URL>';

  sinon.stub(location, 'assign');

  // other setup if required

  showEnrollRoute();

  expect(location.assign).toHaveBeenCalledWith(expected);

  location.assign.restore();
});