reactjs - 在 Jest 测试文件中使用流会导致未定义的测试、期望等

标签 reactjs testing flowtype jestjs

我有一个简单的 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 会导致流错误,因为它们没有定义。有什么方法可以将它们设置为某种全局变量,这样流程就不会出错吗?

最佳答案

为了进一步说明 Andreas 在评论中所说的内容,Flow 允许您为外部库创建库定义。 (因为我假设您在这里使用 Jest)。 (这些有时称为 libdefs)

当有人创建全局库时,他们可以使用 declare functiondeclare class 语法将函数(或类!)声明为全局,记录在 Flow libdef documentation页面。

在大多数情况下,所有这些都是您可以忽略的实现细节。 flow-typed 提供了大量的库声明。其中一些是自动生成的,其中一些是人工组合的。

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

关于reactjs - 在 Jest 测试文件中使用流会导致未定义的测试、期望等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50201211/

相关文章:

javascript - CSS 模块无法覆盖另一个 css 模块中的样式

javascript - 在 ReactJs 中使用 react-router 获取事件路由

Django 测试依赖于其他页面/行为

eslint - flowtype 将单个包导入标记为未找到

javascript - 如何使用常量值作为流类型文字?

javascript - 逻辑 && 运算符内的多个 <options>

reactjs - Shopify 应用程序 - 脚本标签 - 从商店检索数据时出现 CORS 错误

java - 构建测试类?

html - 使用 Selenium 与 Canvas 交互

redux - Redux reducer 默认语句中的奇怪类型空流语法