javascript - 开玩笑 - dontMock 功能没有按预期工作
问题描述
我试图在测试函数中取消模拟 axios 模块,但即使我已经声明了 dontMock 函数,它也会继续返回模拟的响应。我究竟做错了什么?
import Axios from 'axios';
jest.mock('axios');
describe('Testing Async Selectors', () =>
it('should render empty dropdown', async () => {
console.log(Axios);
});
it('should render empty dropdown', async () => {
jest.dontMock('axios');
console.log(Axios);
});
});
解决方案
jest.dontMock(moduleName)应该与jest.doMock(moduleName, factory, options)一起使用。
例如
describe('Testing Async Selectors', () => {
beforeEach(() => {
jest.resetModules();
});
it('should mock axios', async () => {
jest.doMock('axios');
const Axios = require('axios');
expect(jest.isMockFunction(Axios)).toBeTruthy();
});
it('should not mock axios', async () => {
jest.dontMock('axios');
const Axios = require('axios');
expect(jest.isMockFunction(Axios)).toBeFalsy();
});
});
单元测试结果:
PASS src/stackoverflow/64818492/index.test.ts (9.71s)
Testing Async Selectors
✓ should mock axios (47ms)
✓ should not mock axios (4ms)
Test Suites: 1 passed, 1 total
Tests: 2 passed, 2 total
Snapshots: 0 total
Time: 10.762s
推荐阅读
- excel - 从一个工作表复制并粘贴到另一个工作表
- javascript - 如何阻止所有欧洲 IP 地址?
- cross-domain - 如何在fabric js的SetBackgroundImage中设置跨域
- python - 如何修复“UnicodeEncodeError:'charmap'编解码器无法编码”?
- c - C - 大端结构与小端结构相互转换
- hyperledger-fabric - Hyperledger Fabric 事件存储在哪里?
- firebase - 将值从一个节点检索到另一个节点
- java - 尝试填充新数组后二元运算符“+”的操作数类型错误
- python - 只用 pandas 获取每组的第一行和最后一行
- c# - OpenXML-InnerText 始终是整数而不是字符串