我有一个简单的 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
会导致流错误,因为它们没有定义。有什么方法可以将它们设置为某种全局变量,这样流程就不会出错吗?
最佳答案
为了进一步说明 Andreas 在评论中所说的内容,Flow 允许您为外部库创建库定义。 (因为我假设您在这里使用 Jest)。 (这些有时称为 libdefs
)
当有人创建全局库时,他们可以使用 declare function
或 declare class
语法将函数(或类!)声明为全局,记录在 Flow libdef documentation页面。
在大多数情况下,所有这些都是您可以忽略的实现细节。 flow-typed 提供了大量的库声明。其中一些是自动生成的,其中一些是人工组合的。
安装了 flow-typed 后,您可以像这样获取 Jest 的库定义:flow-typed install jest@22.x.x
。其中应包含一个 declare function
声明,使 test
函数成为 Flow 知道的全局函数,而无需 require
或 import
来自任何地方的类型或函数。
关于reactjs - 在 Jest 测试文件中使用流会导致未定义的测试、期望等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50201211/