首页 > 解决方案 > 模拟窗口具有嵌套的函数和值

问题描述

我有以下有效的方法。我正在尝试为它编写一个测试。

我如何模拟 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');
  });
});

标签: javascriptreactjsjestjs

解决方案


推荐阅读