JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – Mocha测试套件尝试连接到API时出错大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用摩卡,通过gulp-jsx-coverage和gulp-mocha运行我的测试套件.我所有的测试都按预期运行并通过/失败.但是,我测试的一些模块通过superagent库对我的API进行http请求.

在开发过程中,我还在本地客户端应用程序旁边的localhost:3000上运行我的API,这就是我的客户端测试正在尝试访问的URl.测试时,API通常不会运行.这可能会导致以下错误:

Error in plugin 'gulp-mocha'
message:
    connect ECONNREFUSED
Details:
    code: ECONNREFUSED
    errno: ECONNREFUSED
    syscall: connect
    domainEmitter: [object Object]
    domain: [object Object]
    domainThrown: false
Stack:
Error: connect ECONNREFUSED
    at exports._errnoException (util.js:746:11)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:983:19)

我尝试在全局帮助器中的所有超级代理(别名为请求)库中存储所有方法,如下所示:

function httpstub() {
  return {
    withCredentials: () => {
      return { end: () => {} };
    }
  };
};

beforeEach(function() {
  global.sandbox = sinon.sandbox.create();

  global.getstub = global.sandbox.stub(request,'get',httpstub);
  global.putstub = global.sandbox.stub(request,'put',httpstub);
  global.patchstub = global.sandbox.stub(request,'patch',httpstub);
  global.poststub = global.sandbox.stub(request,'post',httpstub);
  global.delstub = global.sandbox.stub(request,'del',httpstub);
});

afterEach(function() {
  global.sandbox.restore();
});

但是由于某些原因,当遇到一些测试时,方法不会被隐藏,所以我遇到了ECONNREFUSED错误.我已经三重检查,没有我在哪里恢复沙箱或任何存根.

有没有办法解决我遇到的问题,或者是整体上更清洁的解决方案?

解决方法

问题可能是由于在测试中不正常进行异步处理.想象下面的例子:
it('is BAD asynchronous test',() => {
  do_something()
  do_something_else()
  return do_something_async(/* callBACk */ () => {
    problematic_call()
  })
})

当Mocha发现这样的测试时,它会同步执行do_something,do_something_else和do_something_async.在那一刻,从Mochas的角度来看,测试结束了,Mocha执行afterEach()(这是坏的,问题的还有待调用!)和(甚至更糟),它开始运行下一个测试!

现在显然,以并行方式运行测试(和beforeEach和afterEach)可能会导致真正奇怪和不可预知的结果,所以毫不奇怪的是,有一些错误(可能在每次被调用在一些测试之后,导致解开环境)

该怎么办

当您的测试结束时,始终向Mocha发出信号.这可以通过返回一个Promise对象,或者通过调用done回调来完成:

it('is BAD asynchronous test',(donE) => {
  do_something()
  do_something_else()
  return do_something_async(/* callBACk */ () => {
    problematic_call()
    done()
  })
})

https://mochajs.org/

这样,摩卡“知道”当你的测试结束,只有在它运行下一个测试.

大佬总结

以上是大佬教程为你收集整理的javascript – Mocha测试套件尝试连接到API时出错全部内容,希望文章能够帮你解决javascript – Mocha测试套件尝试连接到API时出错所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。