反应酶测试

时间:2018-08-24 08:34:45

标签: javascript reactjs file blob enzyme

我的react组件具有File输入(上传)元素。 当用户上传if a == 0: if b > 0: return 0 else # raise an exception here? 文件时,将调用组件方法,该方法读取xlsx文件并将其转换为JSON并将其放入redux表中。该方法是“ convertFileDataToJSON”,它接受文件 对象并执行上述操作。

我需要测试此方法。

我无法使用“新文件(“ file:// path / to / file”)“。 我收到以下错误

  

TypeError:FileConstructor不是构造函数(正在评估“新文件”)

我正在使用“新Blob”创建Blob对象并将其发送到 实例方法转换为实例方法。

xlsx

在测试此方法方面的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

好的,不是答案,但是让我建议您更改测试自己的代码的方式。

命令性地测试React Component方法或多或少是一种反模式-一件坏事。原因很简单:一个组件将其公共API定义为 props ,这就是您应该测试的表面。

  

注意:虽然组件实例方法实际上是公开给具有对其引用的父组件的,但这被认为是不好的做法。

更好的方法是拥有一个可以独立测试的独立功能:

export function convertFileDataToJSON(file) {
  return // ...
}

,您将在Jest中对其进行测试,如下所示:

import { convertFileDataToJSON } from '../utils/somewhere';

const blob = new Blob(
  [
    "application_id,Statement " +
    "Received Date,Statement Requested Date,"+
    "1,10/10/70,10/10/70,10/10/70"+
    "2,12/20/71,12/20/71,12/20/71"
  ],
  {type : "text/plain"}
);

describe('XLSX to JSON', () => {
  it('Works on simple CSV files', () => {
    const data = convertFileDataToJSON(blob);

    expect(data).toMatch( ...something );
  });
})