我有一个简单的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
内部添加流程是很好的,但test
和expect
导致流错误,因为它们未定义。有没有办法将它们设置为某种类型的全局变量,因此流量不会误解它们?
答案 0 :(得分:3)
为了扩展Andreas在评论中所说的内容,Flow允许您为外部库创建库定义。 (因为我假设你在这里使用Jest)。 (这些有时称为"schematics": {
"@schematics/angular:component": {
"styleext": "scss"
}
}
)
当有人创建一个全局库时,他们可以使用libdefs
或declare function
语法声明一个函数(或类!)为全局函数,并记录在Flow libdef documentation页面上。
在大多数情况下,这一切都是您可以忽略的实施细节。 flow-typed为图书馆提供了大量的声明。其中一些是自动生成的,其中一些由人类组合在一起。
安装了flow-typed后,您可以像下面这样获取Jest的库定义:declare class
。其中应包含flow-typed install jest@22.x.x
声明,以使declare function
函数成为Flow所知道的全局函数,而无需从任何地方test
或require
类型或函数。