javascript - 模拟窗口具有嵌套的函数和值
问题描述
我有以下有效的方法。我正在尝试为它编写一个测试。
我如何模拟 window.getStatus 以返回字符串中的值,以便我可以模拟返回值
并且还能够验证是否使用正确的值调用了字符串?
import get from 'lodash/get';
const getData = (name) => get(window.getStatus(),
`data.toJS()[\'base-path\'].current[\'${name}'].exclusions[\'period\']`);
尝试了以下测试。
但它会抛出这个错误。
类型错误:window.getStatus 不是函数
测试
describe('My Test', () => {
let windowSpy;
beforeEach(() => {
windowSpy = jest.spyOn(window, "window", "get");
});
afterEach(() => {
windowSpy.mockRestore();
});
it('should ', () => {
windowSpy.mockImplementation(() => ({
getStatus: {
data: {
'base-path': {
current: {
'login-name': {
exclusions: {
'period': 'mock name',
}
}
}
}
}
}
}));
const result = getData('login-name');
expect(result).toEqual('mock name');
});
});
解决方案
推荐阅读
- php - Laravel 5.6 OneToOne 关系不起作用
- c# - c# subForm skin as mainForm skin
- javascript - 在@flow strict 下,对于实用功能,Object 有哪些替代方案?
- vue.js - 如何在 Nuxt.js 中设置 beforeResolve 导航守卫
- html - 多列手风琴背景滑动
- r - 如何按长/纬度值过滤 sfc 多边形?
- bookdown - 在 bookdown 书中包含 css?
- r - 绘制网络时固定节点
- r - 对于每个数据框行,找到位于某个范围内的点
- google-drive-api - 如何使用手表订阅 Google Drive 上的更改