node.js - 你如何使用 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 的类。
解决方案
推荐阅读
- google-cloud-platform - 谷歌云平台哪个地方消费kafka话题最好?
- php - PHP中模板字符串中关联数组的所有组合?
- node.js - CKEditor5 Online Editor - 如何为strapi配置自定义npm包
- javascript - 有没有`从
进口 ` ES6 中的语法? - css - MIME 类型 ('text/html') 不是受支持的样式表 MIME 类型,
- android - Android Studio 代码不适用于 Android 版本 P 9.0
- angular - 子延迟加载模块中解析器服务上的 Angular 9 NullInjectorError
- azure - Azure AD B2C 中自定义策略中的 Rest API 调用
- sql-server - 透视视图中的功能
- string - Haskell中的字符串组合