mirror of
https://gitlab.com/Binaryify/neteasecloudmusicapi.git
synced 2025-05-23 22:37:41 +08:00
test(server): more reliable test for server
This commit is contained in:
parent
4e434a2691
commit
9e0c900f6f
15
app.test.js
15
app.test.js
@ -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))
|
|
||||||
})
|
|
13
package-lock.json
generated
13
package-lock.json
generated
@ -26,6 +26,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/express": "^4.17.13",
|
"@types/express": "^4.17.13",
|
||||||
"@types/express-fileupload": "^1.2.2",
|
"@types/express-fileupload": "^1.2.2",
|
||||||
|
"@types/mocha": "^9.1.0",
|
||||||
"@types/node": "16.11.19",
|
"@types/node": "16.11.19",
|
||||||
"@typescript-eslint/eslint-plugin": "5.0.0",
|
"@typescript-eslint/eslint-plugin": "5.0.0",
|
||||||
"@typescript-eslint/parser": "5.0.0",
|
"@typescript-eslint/parser": "5.0.0",
|
||||||
@ -266,6 +267,12 @@
|
|||||||
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
|
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
|
||||||
"dev": true
|
"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": {
|
"node_modules/@types/node": {
|
||||||
"version": "16.11.19",
|
"version": "16.11.19",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.19.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.19.tgz",
|
||||||
@ -5941,6 +5948,12 @@
|
|||||||
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
|
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
|
||||||
"dev": true
|
"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": {
|
"@types/node": {
|
||||||
"version": "16.11.19",
|
"version": "16.11.19",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.19.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.19.tgz",
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
"description": "网易云音乐 NodeJS 版 API",
|
"description": "网易云音乐 NodeJS 版 API",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node app.js",
|
"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": "eslint \"**/*.{js,ts}\"",
|
||||||
"lint-fix": "eslint --fix \"**/*.{js,ts}\"",
|
"lint-fix": "eslint --fix \"**/*.{js,ts}\"",
|
||||||
"prepare": "husky install",
|
"prepare": "husky install",
|
||||||
@ -58,6 +58,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/express": "^4.17.13",
|
"@types/express": "^4.17.13",
|
||||||
"@types/express-fileupload": "^1.2.2",
|
"@types/express-fileupload": "^1.2.2",
|
||||||
|
"@types/mocha": "^9.1.0",
|
||||||
"@types/node": "16.11.19",
|
"@types/node": "16.11.19",
|
||||||
"@typescript-eslint/eslint-plugin": "5.0.0",
|
"@typescript-eslint/eslint-plugin": "5.0.0",
|
||||||
"@typescript-eslint/parser": "5.0.0",
|
"@typescript-eslint/parser": "5.0.0",
|
||||||
|
33
server.test.js
Normal file
33
server.test.js
Normal file
@ -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))
|
||||||
|
})
|
Loading…
x
Reference in New Issue
Block a user