在我们的Bitbucket管道中运行摩卡测试时遇到问题。这些测试在本地执行时有效。
我们这样设置Hapi服务器:
const server = new Hapi.Server(settings);
server.connection({
host: config.get('host'),
port: config.get('port') || 3000,
});
server.register(modules, () => {
server.start((err) => {
if (err) throw err;
console.log('Server running at:', server.info.uri);
});
});
export default server;
测试看起来像这样:
import server from '../server';
describe('Public callbacks', () => {
describe('handleCallback', () => {
it('should call all services successfully', async () => {
const result = await server.inject({
method: 'GET',
url: '/path/to/somewhere',
});
expect(result.statusCode).to.be.equal(200);
});
});
});
在本地运行时,此方法工作正常,并且已加载所有模块。但是,当我们在Bitbucket管道中运行此测试时,所有测试都会失败并显示404状态,server.info
如下所示:
{ created: 1548249331200,
started: 0,
host: 'localhost',
port: 3000,
protocol: 'http',
id: 'd60bcd2a-dffe-475f-babc-453899f9cb68:1178:jr97odmo',
uri: 'http://localhost:3000' }
在所有测试运行之前,我尝试添加了mocha before
调用。
import path from 'path';
before(async function startup() {
this.timeout(15000);
const { default: server } = require(path.resolve('path/to', 'server/server'));
if (server.info.started) { return; }
return new Promise((resolve) => server.on('start', resolve));
});
在本地运行时,server.info.started
总是真实的,但是在管道中它是错误的,并且永远不会发出start
事件。
在Bitbucket管道中运行时,可能导致Hapi无法启动的原因是什么?