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.
谢谢!
1
divasatanica 2020-06-12 17:12:48 +08:00
依赖注入? 你现在 FolderEnumerate 在内部依赖 MyEnumerate 这个类,写个方法将 MyEnumerate 注入到 FolderEnumerate 当中再进行 new 操作而不是写死 new 一个 MyEnumerate 类的实例,这样测试时可以注入你的 Mock 类来实现单元测试
|
2
JimmyLv 2021-04-12 23:20:37 +08:00
使用 Jest mock `constructor()` 方法即可
```js import LoginApi from "../../services/api/login-api" jest.mock("../../services/api/login-api") LoginApi.mockImplementation(() => ({ login: jest.fn(() => ({ displayName: "张总", })), })) ``` |
3
JimmyLv 2021-04-12 23:24:10 +08:00
使用 Jest mock `constructor()` 方法即可
import { MyEnumerator } from "../MyEnumerator"; jest.mock("../MyEnumerator") MyEnumerator.mockImplementation(() => ({ enumerate: jest.fn(() => ({ whateverYouWant: "xxxx", })), })) |