我有一个测试安装程序,测试一个简单的提交按钮组件,单击该组件将触发从另一个目录导入的 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类的另一个导入所使用,这意味着它不仅会拾取模拟,还会创建完整的类并尝试下载其所有导入。
很抱歉,这个问题不太准确,但是我对这个话题真的很陌生。
这是什么问题,可能是什么解决方案? 非常感谢!