From 9e0c900f6fb1a9be9e442b848d8304cf75c89ed4 Mon Sep 17 00:00:00 2001 From: pan93412 Date: Wed, 26 Jan 2022 14:30:00 +0800 Subject: [PATCH] test(server): more reliable test for server --- app.test.js | 15 --------------- package-lock.json | 13 +++++++++++++ package.json | 3 ++- server.test.js | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 48 insertions(+), 16 deletions(-) delete mode 100644 app.test.js create mode 100644 server.test.js diff --git a/app.test.js b/app.test.js deleted file mode 100644 index 94846b2..0000000 --- a/app.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const fs = require('fs') -const path = require('path') - -let app -before(() => { - app = require('./app.js') - global.host = 'http://localhost:' + app.server.address().port -}) -after((done) => { - app.server.close(done) -}) - -fs.readdirSync(path.join(__dirname, 'test')).forEach((file) => { - require(path.join(__dirname, 'test', file)) -}) diff --git a/package-lock.json b/package-lock.json index e938d80..b90d27d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,6 +26,7 @@ "devDependencies": { "@types/express": "^4.17.13", "@types/express-fileupload": "^1.2.2", + "@types/mocha": "^9.1.0", "@types/node": "16.11.19", "@typescript-eslint/eslint-plugin": "5.0.0", "@typescript-eslint/parser": "5.0.0", @@ -266,6 +267,12 @@ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", "dev": true }, + "node_modules/@types/mocha": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz", + "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==", + "dev": true + }, "node_modules/@types/node": { "version": "16.11.19", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.19.tgz", @@ -5941,6 +5948,12 @@ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", "dev": true }, + "@types/mocha": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz", + "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==", + "dev": true + }, "@types/node": { "version": "16.11.19", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.19.tgz", diff --git a/package.json b/package.json index a403c13..c40bf24 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "网易云音乐 NodeJS 版 API", "scripts": { "start": "node app.js", - "test": "mocha -r intelli-espower-loader -t 20000 app.test.js --exit", + "test": "mocha -r intelli-espower-loader -t 20000 server.test.js --exit", "lint": "eslint \"**/*.{js,ts}\"", "lint-fix": "eslint --fix \"**/*.{js,ts}\"", "prepare": "husky install", @@ -58,6 +58,7 @@ "devDependencies": { "@types/express": "^4.17.13", "@types/express-fileupload": "^1.2.2", + "@types/mocha": "^9.1.0", "@types/node": "16.11.19", "@typescript-eslint/eslint-plugin": "5.0.0", "@typescript-eslint/parser": "5.0.0", diff --git a/server.test.js b/server.test.js new file mode 100644 index 0000000..e3d28b2 --- /dev/null +++ b/server.test.js @@ -0,0 +1,33 @@ +const fs = require('fs') +const path = require('path') +const serverMod = require('./server') + +/** @type {import("express").Express & serverMod.ExpressExtension} */ +let app + +before(async () => { + app = await serverMod.serveNcmApi({}) + + if (app.server && app.server.address) { + const addr = app.server.address() + if (addr && typeof addr === 'object' && 'port' in addr) { + global.host = `http://localhost:${addr.port}` + return + } + } + + throw new Error('failed to set up host') +}) + +after((done) => { + if (app.server) { + app.server.close(done) + return + } + + throw new Error('failed to set up server') +}) + +fs.readdirSync(path.join(__dirname, 'test')).forEach((file) => { + require(path.join(__dirname, 'test', file)) +})