在不停止执行javascript的情况下停止网络呼叫

时间:2017-09-26 18:11:06

标签: javascript intern

上下文

我们正在使用theintern.io运行一些功能单元测试。不幸的是,第三方网络电话随机导致页面超时,从而导致所有单元测试失败。

在某个时刻,我想在所有网络电话上切断电源线,以防止浏览器挂起/测试失败。我已尝试window.stop(),但这会导致测试挂起。

问题

如何在没有的情况下停止所有网络电话,同时停止我的功能测试的javascript执行?

1 个答案:

答案 0 :(得分:0)

首先,window.stop不会停止javascript执行,在你的情况下,如果测试是动态加载的话,它可能看起来像这样做。 window.stop与浏览器地址栏上的点击停止按钮相同(来源:https://developer.mozilla.org/en-US/docs/Web/API/Window/stop)。

现在回答您的问题,有多种方法可以解决这个问题,我的建议是模拟所有网络电话。 (假设第三方调用你提到的都是AJAX)。在编写单元测试时,这也是一种很好的做法。您可以使用sinon。 (来源:http://sinonjs.org/

您可以提供预期的回复,或只是提供404或其他任何内容,并立即回复请求。这样,您的测试不会超时。希望它有所帮助

{
  beforeEach() {
    server = sinon.fakeServer.create();
  },
  afterEach() {
   server.restore()
  },
  tests: {
    testA() {
        server.respondWith("GET", /<regexPattern>/,[200, {"Content-Type": "text/plain"},""]);
        server.respondImmediately = true;
      }
  }
}