Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

261
Views
Manual mock of object in Jest

I'm trying to figure out manual mocks in Jest. I think this should be easy...but it isn't.

My project directories are like

  • __tests__
    • user-test.js
  • models
    • user.js
    • __mocks__
      • user.js
  • node_modules
    • ...
  • package.json

Both models/user.js and models/__mocks__/user.js have the same code:

module.exports = {
    create(username, password) {
        return new Promise(function(resolve, reject) {
            setTimeout(function() {
                resolve({"username":username, "password": password});
            }, 100);
        });
    }
}

The file __tests__/user-test.js looks like this:

test('user creation works', () => {
    const user = require('../models/user');
    //const user = jest.mock('../models/user');
    return user.create("mitchell", "boo");
});

This works fine, tests pass, but when I change it to:

test('user creation works', () => {
    //const user = require('../models/user');
    const user = jest.mock('../models/user');
    return user.create("mitchell", "boo");
});

It doesn't work, and spits out:

 FAIL  __tests__\user-test.js
  ● user creation works

    TypeError: user.create is not a function

      at Object.<anonymous>.test (__tests__\user-test.js:4:17)
      at process._tickCallback (internal\process\next_tick.js:103:7)
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Ah! Figured it out! My folder structure is fine. Turns out I had a misunderstanding as to what "jest.mock" actually did. "jest.mock" changes the behavior of the node "require" function to use the mock, it doesn't do a require itself.

My test should have looked like:

jest.mock('../models/user');
test('user creation works', () => {
    const user = require('../models/user');
    return user.create("mitchell", "boo");
});
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!