Skip to main content

Testing

Unit testing and integration testing are vital in software development. Unit testing ensures individual components or functions work correctly in isolation, catching bugs early and improving code quality.

Integration testing verifies the interactions between these components, revealing issues that emerge when integrated.

Both types identify problems early, enhance reliability, and reduce the cost of fixing issues in later development stages or production. Ultimately, they bolster software robustness, enabling smoother deployment and minimizing risks, which is crucial for delivering reliable and efficient applications.

Framework X comes with a built-in testing framework that makes it easy to write unit and integration tests for your APIs. Framework X uses supertest with jest as its testing framework. Supertest is a library made specifically for testing Node.js HTTP servers. It provides a high-level abstraction for testing HTTP, while still allowing you to drop down to the lower-level API provided by superagent. you can read more about supertest here.

Example Tests

Below are some examples of a test for a simple API endpoints.

index.get.test.js

const app = require("./index.mdx")
const supertest = require("supertest")

describe("Test the root path", () => {
test("It should response the GET method", async () => {
await supertest(app)
.get("/")
.expect(200)
.then((response) => {
expect(response.body.status).toBe(true)
})
})
})

index.post.test.js

const app = require("../index")
const supertest = require("supertest")

describe("Test the root post path", () => {
test("It should response the POST method", async () => {
await supertest(app)
.post("/")
.send({
key: "value"
})
.expect(200)
.then((response) => {
expect(response.body.status).toBe(true)
})
})
})

index.fail.validation.test.js

const app = require("../index")
const supertest = require("supertest")

describe("Test the root post path with fail validation", () => {
test("It should response the POST method with failed validation", async () => {
await supertest(app)
.post("/")
.send({
ky: "value" //key is requited in validation...
})
.expect(406)
.then((response) => {
expect(response.body.status).toBe(false)
})
})
})

Running Tests

To run your tests, you can use the following command:

pnpm run test

Support Framework X

  • You can also support the project by following the organization and Star ⭐ the project on GitHub
  • Contribute by submitting issues and pull requests
  • Share the project with your friends and colleagues, any and all support is appreciated. 🙏
  • If you find this Framework useful, We will always appreciate a strong cup of coffee.