我有完全相同的设置,使用 gitlab-ci docker runner。您不需要node server.js
在启动测试之前启动,您可以让您的测试运行程序处理它。我使用 Mocha + Chai(使用 chai-http)。你也可以使用 supertest 来做同样的事情。
它会在每次测试之前查找可用端口,这样您就不会遇到端口冲突。
这是它的外观:
var chai = require('chai');
var chaiHttp = require('chai-http');
// Interesting part
var app = require('../server/server');
var loginUser = require('./login.js');
var auth = {token: ''};
chai.use(chaiHttp);
chai.should();
describe('/users', function() {
beforeEach(function(done) {
loginUser(auth, done);
});
it('returns users as JSON', function(done) {
// This is what launch the server
chai.request(app)
.get('/api/users')
.set('Authorization', auth.token)
.then(function (res) {
res.should.have.status(200);
res.should.be.json;
res.body.should.be.instanceof(Array).and.have.length(1);
res.body[0].should.have.property('username').equal('admin');
done();
})
.catch(function (err) {
return done(err);
});
});
});