Search code examples
node.jstypescriptunit-testingts-jesthttp-mock

Error in Jest test req.session.save is not a function


It giving me a error at await req.session.save(); like req.session.save is not a function.

How I can create mock for req.session.save()?

myController.ts

static async connect(req: any, res: Response) {
    ...
    req.session.testToken = {
        refresh_token: refresh_token,
        access_token: access_token,
        expires_in: 1200
    };
    await req.session.save();

    res.json({success:true, message:'Connected'});
}

myController.spec.ts

descibe('test',()=> {
    let req = httpMocks.createRequest();
    let res = httpMocks.createResponse();

    it('should connected',()=> {
        myController.connect(req,res);

        expect(res.statusCode).toBe(200);
        expect(res._isEndCalled()).toBeTruthy();
    });
})

Solution

  • Just you have to create a mock for req.session.save()

    myController.spec.ts

    descibe('test',()=> {
        let req = httpMocks.createRequest({
            session: {
                    save: jest.fn()
            }
        });
        let res = httpMocks.createResponse();
    
        it('should connected',()=> {
            myController.connect(req,res);
    
            expect(res.statusCode).toBe(200);
            expect(res._isEndCalled()).toBeTruthy();
        });
    })