📜  Node.js 应用程序的调试和测试

📅  最后修改于: 2022-05-13 01:56:52.218000             🧑  作者: Mango

Node.js 应用程序的调试和测试

在团队中构建大型项目时,代码库中的持续更改将获得最佳结果。因此,如果有人编写代码并且因此已经存在的功能被破坏,那么我们会为此使用软件测试。

保持您的项目自动测试,我们有测试,每次我们运行项目时,我们都可以检查哪些测试继续通过,哪些没有通过。那些未能通过的测试表明该部分代码正在进行一些更改。

开发用于实施测试和调试的简单 Web 应用程序:在此 Web 应用程序中,我们根据各种参数设置票价,如果有人更改票价,我们必须对其进行测试,以便团队的每个成员都知道票价的变化利率已经发生。

第一步:创建项目文件夹
下载所有依赖项并设置节点服务器

npm init
npm install express

第 2 步:将要测试的逻辑添加到根文件夹中的单独文件中
在这个文件(fareutils.js)中,我们存储了我们想要测试的代码,并将函数导入到我们的服务器文件中。

// Shows the user rate chart
rate =  {
    fixed: 50,
    minKm: 5,
    perKm: 10,
    freeMin: 15,
    perMin: 2
}
  
// Logic for calculating fare according to ride details
function calcFare(km, min) {
    let fare = rate.fixed
    fare += (km > rate.minKm) ? ((km - rate.minKm) * rate.perKm) : 0
    fare += (min > rate.freeMin) ? ((min - rate.freeMin) * rate.perMin) : 0
    return fare
}
  
// Exports the two functions to server.js
exports = module.exports = {
    rate, calcFare
}

第 3 步:现在对我们使用 MOCHA 和 CHAI 的上述逻辑进行测试:

  • Mocha是一个 JS 测试框架。它使用describe方法对我们的测试进行分组,并使用it方法来运行我们的测试。
  • Chai是一个断言库,它确保我们的值是相似的,因为 chai 可以将对象和数组等同起来,这在普通的 javascript 中并不容易做到。它会进行深度相等检查,检查对象的内容并使其相等。
    npm install mocha chai
    

第 4 步:在根目录中创建一个名为 test 的新文件夹:
我们将创建一个文件(fareutils.test.js),我们将在其中编写我们的 mocha 和 chai 测试用例。

// Importing mocha and chai
const mocha = require('mocha')
const chai = require('chai')
  
// Importing fareutils.js where our code is written
const fareUtils = require('../fareutils')
  
const expect = chai.expect
  
// Group of tests using describe
describe('fareUtils', function () {
  
    // We will describe each single test using it
    it('expect fare to be 50 for 0km, 0min', () => {
        let fare = fareUtils.calcFare(0, 0)
        expect(fare).to.equal(50)
    })
  
    it('expect fare to be 100 for 10km, 0min', () => {
        let fare = fareUtils.calcFare(10, 0)
        expect(fare).to.equal(100)
    })
  
    it('expect fare to be 56 for 2km, 18min', () => {
        let fare = fareUtils.calcFare(2, 18)
        expect(fare).to.equal(56)
    })
})

第五步:设置节点服务器

const express = require('express');
const path = require('path')
const fareUtils = require('./fareutils')
  
const app = express();
  
app.use(express.json())
app.use(express.urlencoded({extended: true}))
  
app.use('/', express.static(path.join(__dirname,
                    'public_static')))
  
app.post('/calcfare', (req, res) => {
    let km = parseFloat(req.body.km)
    let min = parseInt(req.body.min)
  
    let fare = fareUtils.calcFare(km, min)
  
    res.send({fare: fare})
})
  
app.get('/rate', (req, res) => {
    res.send(fareUtils.rate)
})
  
app.listen(2222, () => console.log(
    'Server started on http://localhost:2222'))

第 6 步:如何运行 mocha 测试
如果所有测试都在 Test 文件夹中,并且您正确需要 mocha 和 chai。在这里,您可以通过将 package.json 文件描述为简单地运行测试

"scripts": {
    "test": "mocha",
    "start": "node app.js",
} 

现在,我们将通过终端或命令提示符中的以下命令开始我们的测试:

npm run test

一切正常且代码不变时的测试结果:

这样测试就通过了,终端上会显示一个绿色的勾号。

现在,如果有人在 fareutils.js 中进行了更改,那么让我们看看终端:
这里我们对fareutils.js的第 11 行进行了修改