【发布时间】:2019-01-02 15:42:14
【问题描述】:
我开始为我的 nodeJs 应用程序编写单元测试,以便了解这个概念。 在为简单函数(使用 Mocha 和 Chai)编写了一些基本测试之后,我想继续进行一些更复杂的测试。
我编写了一段简单的代码,可以使用节点的 HTTPS 模块发出请求。该代码如下所示:
const https = require('https')
module.exports.doRequest = function (params, postData) {
return new Promise((resolve, reject) => {
const req = https.request(params, (res) => {
let body = []
res.on('data', (chunk) => {
body.push(chunk)
})
res.on('end', () => {
try {
body = JSON.parse(Buffer.concat(body).toString())
} catch (e) {
reject(e)
}
resolve(body)
})
})
req.on('error', (err) => {
reject(err)
})
if (postData) {
req.write(JSON.stringify(postData))
}
req.end()
})
}
现在我想用以下参数调用这个方法:
const PARAMS = {
host: 'jsonplaceholder.typicode.com',
port: 433,
method: 'GET',
path: `/todos/1`,
headers: {
Authorization: 'Bearer 123'
}
}
然后像这样发出请求:
getTodos = (PARAMS) => {
return doRequest(PARAMS).then((result) => {
if (result.errors) { throw result }
return {
'statusCode': 200,
'body': JSON.stringify({ message: result.title }),
}
}).catch((error) => ({
'statusCode': error.statusCode,
'body': JSON.stringify({ message: error.message }),
}
))
}
现在我的问题是如何正确测试这段代码。我已经研究过如何使用 Nock.js 库来解决这个问题,但我对从哪里开始没有很好的理解。 如果有人能指出我如何开始为这段代码编写一些测试的正确方向,我将不胜感激。
【问题讨论】:
标签: javascript node.js unit-testing testing mocking