首页 > 解决方案 > 你如何使用 Jest 在一个类中模拟一个类?

问题描述

我正在尝试为一个项目编写一些单元测试,但我在完全模拟一个类时遇到了一些困难。我可以在测试函数的范围内模拟它,但是当它在下面的 B 类中被调用时,我不能让它模拟出这个类。这是我所拥有的一个例子:

File1.ts

Class A {
 function x(){ return uuid()}
}
___mocks__/File1.ts

export const mockX = jest.fn().mockReturnValue('x');

const mock = jest.fn().mockImplementation(() => {
    return { x: mockX};
});

export default mock;
File2.ts

//...imports...

Class B {
 function y(){
  //...lots of code that does stuff
   let serialNum = A.x();
   return {serialNum:serialNum, ...other important values}
  }
}
File2.test.ts

//...imports....
import {mockX} from '___mocks__/File1';

describe('test',()=>{

test('',()=>{
     jest.mock('/path/to/file1');
     const A = require('/path/to/file1');
     A.x = mockX;

      let w = A.x(); 
      console.log(w) // will be 'x'  
      let expectedResult = {serialNum: w, ...other important values}
     
      let z = B.y();
      console.log(z) // will be an object that has a regular uuid {serialNum: f5c5d215-8efb-44a0-8743-1252106ad77}
     expect(z).toStrictlyEqual(expectedResult);


  });

});

本质上,我的问题是我在测试中处理随机 UUID,我不确定如何编写足够的测试用例。我想模拟为接收到的和预期的结果生成 UUID 的类。

标签: node.jstypescriptunit-testingtestingjestjs

解决方案


推荐阅读