Debug testing a nodejs app with visual code

Chắc hẳn khi viết test nhiều bạn sẽ chỉ cho test chạy và đôi khi không biết lỗi bắn ra ở đâu. Bài viết này mình sẽ hướng dẫn các bạn debug trong quá trình testing Ở đây mình sẽ sử dụng ngôn ngữ là nodejs và thực hiện test với thư viện mocha, chai

Chắc hẳn khi viết test nhiều bạn sẽ chỉ cho test chạy và đôi khi không biết lỗi bắn ra ở đâu. Bài viết này mình sẽ hướng dẫn các bạn debug trong quá trình testing
Ở đây mình sẽ sử dụng ngôn ngữ là nodejs và thực hiện test với thư viện mocha, chai và supertest

1. Chuẩn bị

  • Các bạn cần cài đặt framework ExpressJS: Express js là một Framework nhỏ, nhưng linh hoạt được xây dựng trên nền tảng của Nodejs. Nó cung cấp các tính năng mạnh mẽ để phát triển web hoặc mobile

  • Các thư viện hỗ trợ việc testing: mocha, chai, supertest

  • Để cài đặt các bạn thực hiện câu lệnh sau trong terminal của thư mục làm việc hiện tại

    npm i express mocha chai supertest
    
  • Cấu trúc thư mục của mình như sau

  • File index.js là đầu vào của chương trình, chạy ở port 3000. Khi truy cập ở địa chỉ localhost:3000 sẽ trả về kết quả ở định dạng json là {msg: 'Hello World'}

  • Thư mục test có chứa file example.test.js là file thực hiện các công việc test

  • Nội dung file example.test

    const expect = require('chai').expect
    const request = require('supertest')
    
    const app = require('../index')
    
    describe('Testing at localhost', () => {
      it('testing route localhost:3000', done => {
        request(app)
          .get('/')
          .then(res => {
            expect(res.status).to.equal(200)
            expect(res.body).to.be.an('object')
            done()
          })
          .catch(err => done(err))
      })
    })
    
    
  • Nội dung chính của file test sẽ là kiểm tra khi mà request đến đường dẫn localhost thì kết quả trả về có http status code là 200 và nội dung trả về có định dạng là json

2. Config cho debug

  • Để thực hiện debug trên visual code các bạn có thể theo dõi bài viết trước của mình tại đây.
  • File cấu hình cho việc debug là launch.json của mình như sau
{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug mocha",
      "type": "node",
      "request": "launch",
      "program": "${workspaceRoot}/node_modules/mocha/bin/_mocha",
	    "stopOnEntry": false,
	    "args": ["test/*.test.js", "--no-timeouts"],
      "cwd": "${workspaceRoot}",
      "runtimeExecutable": null,
      "env": { "NODE_ENV": "test"},
      "internalConsoleOptions": "openOnSessionStart",
      "skipFiles": [
        "<node_internals>/**"
      ]
    },
  ]
}
  • Một số thông tin quan trọng
    • name: tên cho luồng debug, ở đây mình đặt là Debug mocha cho dễ hiểu
    • type: node -> môi trường chạy sẽ là trên môi trường nodejs
    • program: trỏ đến thư mục chứa thư viện mocha
      • args: trỏ đến thư mục chứa file test là test/*.test.js

3. Thực hiện debug

a. Chọn breakpoint

  • Ở đây mình sẽ chọn breakpoint tại dòng 11 để xem kết quả trả về như thế nào
  • Chọn luồng debug là Debug mocha
  • Sau đó mình truy cập vào địa chỉ localhost:3000. Sẽ thấy chương trình dừng tại điểm breakpoint

  • Ở khung variable bên cạnh chúng ta có thể thấy được các biến local.

    • body: {msg: 'Hello World'}
    • status: 200

Đến đây thì chúng ta đã thực hiện xong việc debug testing trên visual code. Chúc các bạn thành công =))

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ