'JS - Mocking an uninitialized class method inside a function

Lets say I have this code below and I want to test someFunc() but I want to mock the doSomething() function? How can I do it in a test when the SomeClass is initialized only inside the someFunc() itself and not in the test?

class SomeClass {
  constructor(element){
    this.element = element
  }
  
  doSomething(element){
    ...
  }
}

function someFunc() {
  const newClass = new SomeClass()
  newClass.doSomething() // I want this to get to the mocked function
}

I am using jest, please help!



Solution 1:[1]

Try some testing frameworks, most of them provide spies which allow you to mock specific functions for given classes.

For example, you can try Jasmine - https://jasmine.github.io/api/edge/Spy.html Where you would do something like

spyOn(newClass, 'doSomething').and.returnValue(42);

Solution 2:[2]

There are multiple ways to mock es6 class in Jest: https://jestjs.io/docs/es6-class-mocks

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Pavel PazdernĂ­k
Solution 2 hulufei