我有一个带有路由的Hapi JS服务器,这是我的Hapi js服务器
const Hapi = require('hapi');
import { Users } from './users';
const port 3000;
const server = new Hapi.Server();
server.connection({ port });
export async function HapiServer() {
server.route([
{
method: 'GET',
path: '/getUsers',
config: {
handler: async (req: any, reply: any) => {
try {
await Users.getUsers(req.params.id)
.then((result) => {
reply(result);
});
} catch (error) {
reply(error);
}
},
},
},
]);
await server.start();
console.log('server running at', server.info.port);
}
HapiServer();
我使用Mocha和Chai进行单元测试,如下所示:
'use strict';
import { should } from 'chai';
import { HapiServer } from '../../server';
const chai = require('chai');
const chaiHttp = require('chai-http');
chai.use(chaiHttp);
describe('testing users ', () => {
it('can get all users', async (done) => {
const result = await chai
.request(HapiServer)
.get(/getUsers)
.then((error, response) => {
if (error) { done(error); }
response.should.have.status(200);
done();
}).catch(done);
});
});
运行测试时,请始终执行以下操作:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (./server.test.ts)
我已经尝试在package.json中更改我的摩卡配置
mocha --timeout 10000
我可能做错了什么?我了解摩卡支持诺言。
答案 0 :(得分:2)
我们实际上将所有解决方案(public static Integer[] divisible(Integer[] array, int target) {
int j = 0;
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < array.length; i++) {
if (array[i] % target == 0) {
j++;
list.add(array[i]);
}
}
Integer answer[] = new Integer[j];
answer = list.toArray(answer);
return answer;
}
,async/await
和promise based
)组合在一起用于测试文件中的异步测试。
让我们使用callback done
的最新解决方案,它将是:
async/await
请注意,此代码中没有describe('testing users ', () => {
it('can get all users', async () => {
const response = await chai.request(HapiServer).get('/getUsers');
response.should.have.status(200);
});
});
,也没有使用done
。
希望有帮助。