Enzyme Jest TS-无法通过静态方法提取模拟文件

时间:2019-06-29 10:46:09

标签: javascript typescript unit-testing jestjs enzyme

我有一个测试安装程序,测试一个简单的提交按钮组件,单击该组件将触发从另一个目录导入的 static 类方法。

这里是按钮:

import React from 'react';
import { IProps } from './form.submit';
import Feedback from 'Services/feedback';

const NextButton = (props: IProps) => (
    <button
        onClick={Feedback.next}
        className="col-2 btn btn-success"
        type="submit">
        Next
    </button>
);

我想在测试中确保每次单击按钮都将运行Feedback.next方法(静态)。 问题是,类Feedback附加了其他依赖项(导入了许多类,有时需要重做并存储数据),随着时间的流逝,这将导致查找模块时出错。

为了省略此设置,我尝试在与Feedback类相同的文件夹中添加模拟文件夹。

class Feedback {
    static next() {}; //The method is originally void
}

export default Feedback;

在我的测试中添加了

import Feedback from 'Services/feedback';
jest.mock('Services/feedback');

以后再像这样测试它:

it('should call next on click', () => {
    button.simulate('click'); 
    expect(Feedback.next).toHaveBeenCalledTimes(1);
})

问题是,在运行测试后,我仍然得到

  

TypeError:无法读取未定义的属性“记录”

链接到并由Import所使用的文件,再由Feedback类的另一个导入所使用,这意味着它不仅会拾取模拟,还会创建完整的类并尝试下载其所有导入。

很抱歉,这个问题不太准确,但是我对这个话题真的很陌生。

这是什么问题,可能是什么解决方案? 非常感谢!

0 个答案:

没有答案