我正在尝试测试hapi.js提供的api。
我选择摩卡,应该和超级。
问题是:每次测试和每个测试组合都可以工作,只要调用不超过10个测试。 如果调用超过10个,则hapi.js会发出此错误:
Debug: connection, client, error
Error: read ECONNRESET
at exports._errnoException (util.js:856:11)
at TCP.onread (net.js:544:26)
和摩卡这一个:
Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
at null.<anonymous> (C:\Users\alex\apflora_api\node_modules\mocha\lib\runnable.js:215:19)
我正在使用此代码(摘录):
'use strict'
const supertest = require('supertest')
const should = require('should')
const appPassFile = require('../appPass.json')
const server = supertest.agent('http://127.0.0.1:4001')
global.describe('/adressen', function () {
global.it('should return more than 140 rows', function (done) {
server
.get('/adressen')
.end((err, res) => {
if (err) throw err
res.body.length.should.be.above(140)
done()
})
})
})
global.describe('/anmeldung', function () {
global.it('should accept known user', function (done) {
const name = appPassFile.user
const pwd = appPassFile.pass
server
.get(`/anmeldung/name=${name}/pwd=${pwd}`)
.end((err, res) => {
if (err) throw err
res.status.should.equal(200)
res.body.length.should.equal(1)
done()
})
})
global.it('should not accept unknown user', function (done) {
server
.get('/anmeldung/name=whoami/pwd=dontknow')
.end((err, res) => {
if (err) throw err
res.status.should.equal(200)
res.body.length.should.equal(0)
done()
})
})
})
到目前为止,我已经尝试过这个来解决问题:
1个套接字数量
const http = require('http')
http.globalAgent.maxSockets = Infinity
这没有影响力。
2以不同方式获取服务器
const app = require('../server.js')
app.address = () => '127.0.0.1:4001'
global.describe('hooks', function () {
global.before(function () {
app.start(function (err) {
if (err) throw err
console.log('Server running at:', app.info.uri)
})
})
})
const server = supertest('http://127.0.0.1:4001')
这会产生相同的错误。
3使用
supertest('http://127.0.0.1:4001')
而不是
supertest.agent('http://127.0.0.1:4001')
这没有影响力。
每次测试都以完成回调结束。
我的印象是supertest意味着与express.js一起使用。但我还没有找到更好的解决方案。
非常感谢帮助。