您的一些测试执行了整页重新加载 - 运行Jasmine测试时出错

Sir*_*ris 39 unit-testing jasmine angularjs karma-jasmine

我遇到了一个问题,当我在Jasmine上运行测试时,我在下面收到此错误.问题是,当我尝试执行一定数量的测试时,似乎会发生这种情况.它似乎与特定的测试无关,就好像我注释掉了一些,测试通过了.如果我取消注释某些测试,则会出现错误.如果我注释掉之前没有注释的那些,它们都会再次通过.(即如果我有红色,绿色,蓝色和橙色测试但它失败了,我会将橙色和蓝色评论通过,然后我取消注释蓝色和橙色它再次失败,但如果我注释掉红色和绿色它再次通过).

Chrome 41.0.2272(Mac OS X 10.10.1)错误您的一些测试执行了整页重新加载!Chrome 41.0.2272(Mac OS X 10.10.1):执行16 of 29(1失败)错误(0.108秒/​​0.092秒)

我对发生的事感到难过.我添加的测试越多,这就成了问题.有没有人遇到过这个?我不知道是什么导致它,因为我的任何测试都没有做任何类型的重定向,并且它们都普遍通过另一台人机.

jpu*_*k11 24

在我的情况下,问题是在我的源代码中我有代码直接在位置对象上设置href,如window.location.href ='somewhere';

在我的规范中,我设置了一个onbeforeunload监听器,它只返回一个字符串,而不是允许重定向发生:

beforeAll(() => {
  window.onbeforeunload = () => 'Oh no!';
});
Run Code Online (Sandbox Code Playgroud)


joh*_*ase 18

确保您的测试使用模拟/间谍正确隔离所有测试模块.您所看到的行为告诉我,您的测试并非真正独立运行 - 它们正在改变一些会触发重新加载的状态.

  • 我在提供赏金后实际上找到了这个地方。是的,你的钱是对的。就我而言,由于某种原因,在进行一定量的测试后会触发重新加载 - 因为对外部系统的未决 http-http 请求在测试 13 和 14 之间恰好超时...;) (2认同)

Adr*_*onu 8

我想你正在使用window.location目标代码中的某个地方.为了通过它只是为了创造一个间谍window.onbeforeunload

例:

window.onbeforeunload = jasmine.createSpy();
Run Code Online (Sandbox Code Playgroud)

或者甚至更好地使用$window,这不会发生.