DEV Community

Cover image for Stubs/fakes(casting as a particular object)
Clara Situma
Clara Situma

Posted on

Stubs/fakes(casting as a particular object)

Stubs are a key tool for software testing, allowing developers to test individual units of code in isolation by replacing external dependencies with simplified versions.

Here's an example of a stub in use:

import { IncomingMessage } from "http";
import { Utils } from "../../app/Utils/Utils";

describe('Utils test Suite', () => { 
    test('getRequestPath valid request', () => { 
        const request = {
            url: 'http://localhost:8080/login'
        } as IncomingMessage
        const requestPath = Utils.getRequestBasePath(request);
        expect(requestPath).toBe('login')
    })
})
Enter fullscreen mode Exit fullscreen mode

In this example, the Utils.getRequestBasePath(req: IncomingMessage): string function is being tested using a stub, specifically the const request = { url: 'http://localhost:8080/login' }as IncomingMessage object.

This object simulates an incoming HTTP request, and is used in place of an actual incoming request that would come from a client. The function is supposed to extract the base path of the request URL and return it. In the test case, the request URL is hardcoded to be "http://localhost:8080/login", and the expected output is "login". The test case uses the Jest testing framework to test the expected output of the function.

Stubs are not only useful in unit testing but also in integration testing and acceptance testing. They are used to replace external systems with simple implementations, allowing the developer to test how different parts of the system interact with each other, and make tests more efficient, reliable, and flexible.

Top comments (0)