javascript/typescript
Jest 写 unit test
被测试的类,大概长这个样子
import {MyEnumerator} from "../MyEnumerator";
export class FolderEnumerate {
getEnumerator() {
return new MyEnumerator();
}
}
大家不要纠结 /诟病这个设计,这是 legacy code,我需要添加 unit test.
FolderEnumerate & getEnumerator 的 code coverage 不够。这里测试代码还没有跑到,需要添加测试。
但我不是很懂,这儿怎么 mock 掉 MyEnumeraor.
谢谢!
依赖注入? 你现在 FolderEnumerate 在内部依赖 MyEnumerate 这个类,写个方法将 MyEnumerate 注入到 FolderEnumerate 当中再进行 new 操作而不是写死 new 一个 MyEnumerate 类的实例,这样测试时可以注入你的 Mock 类来实现单元测试
使用 Jest mock `constructor()` 方法即可
```js
import LoginApi from "../../services/api/login-api"
jest.mock("../../services/api/login-api")
LoginApi.mockImplementation(() => ({
login: jest.fn(() => ({
displayName: "张总",
})),
}))
```
使用 Jest mock `constructor()` 方法即可
import { MyEnumerator } from "../MyEnumerator";
jest.mock("../MyEnumerator")
MyEnumerator.mockImplementation(() => ({
enumerate: jest.fn(() => ({
whateverYouWant: "xxxx",
})),
}))
这里的 mockImplementation 里的,“ enumerate” 是啥意思?这样就是 mock 掉构造函数?