在jest测试文件中使用flow会导致未定义的测试,期望等

时间:2018-05-06 15:09:00

标签: testing flowtype jest

我有一个简单的test.js文件

// @flow
import React from "react";
import renderer from "react-test-renderer";
import RatioImage from "./";

test("<RatioImage /> base case should render correctly", () => {
  const tree = renderer.create(<RatioImage width={100} ratio={1} source={{ uri: "" }} />);
  expect(tree).toMatchSnapshot();
});

renderer内部添加流程是很好的,但testexpect导致流错误,因为它们未定义。有没有办法将它们设置为某种类型的全局变量,因此流量不会误解它们?

1 个答案:

答案 0 :(得分:3)

为了扩展Andreas在评论中所说的内容,Flow允许您为外部库创建库定义。 (因为我假设你在这里使用Jest)。 (这些有时称为"schematics": { "@schematics/angular:component": { "styleext": "scss" } }

当有人创建一个全局库时,他们可以使用libdefsdeclare function语法声明一个函数(或类!)为全局函数,并记录在Flow libdef documentation页面上。

在大多数情况下,这一切都是您可以忽略的实施细节。 flow-typed为图书馆提供了大量的声明。其中一些是自动生成的,其中一些由人类组合在一起。

安装了flow-typed后,您可以像下面这样获取Jest的库定义:declare class。其中应包含flow-typed install jest@22.x.x声明,以使declare function函数成为Flow所知道的全局函数,而无需从任何地方testrequire类型或函数。