javascript - 使用flowtype静态检查mocha测试代码

标签 javascript mocha.js flowtype

我有一些复杂的 Mocha 代码,我想用 FlowType 进行静态检查,为什么不呢?

下面是一个最小的重现:

/* @flow */

describe('it', function () {
    it('fails', function() {
        const s: number = 'flow spots this error';
    });
});

当我对此运行 Flow 时,Flow 确实发现了将 string 分配给 number 的问题,这表明该方法在某种程度上是有效的。

但是,我也得到:

test/test.js:4
  4: describe('it', function () {
     ^^^^^^^^ identifier `describe`. Could not resolve name

test/test.js:5
  5:     it('fails', function() {
         ^^ identifier `it`. Could not resolve name

…显然,Mocha 测试定义在这些函数全局可用的环境中运行,但查看测试文件,没有任何东西可以让 Flow 检测到。

我不确定这些问题是 Mocha 特有的,但我觉得我不能自信地从更广泛的 Angular 来界定这个问题,所以我的问题是:

  1. 如何让 Flow 类型检查 Mocha 测试代码而不抑制包含 describeit 的每一行?
  2. 这是更广泛情况的一个实例吗?如果是,后者会是什么情况?

最佳答案

第三方库通常需要定义文件,即包含给定库的所有类型信息的文件。

在这种情况下,您需要 mocha 的定义文件,幸运的是 flow-typed. 提供了它。

安装它

npm install -g flow-typed

然后运行

flow-typed install 

它将自动为您的依赖项安装所有可用的定义文件,包括 mocha。

关于javascript - 使用flowtype静态检查mocha测试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40666571/

相关文章:

JavaScript:JSON 'for loop'

javascript - 在 for 循环中将 <li> 节点替换为带有 h​​ref 的 anchor

javascript - 使用不同的数据多次运行相同的 mocha 测试

javascript - Node (Gulp)process.stdout.write 到文件

javascript - 如何消除流类型的歧义

javascript - ReactErrorUtils.invokeGuardedCallback 中的 React 在 IE 浏览器中重复触发事件

javascript - 仅当之前完成警报时,输入字段的重置才有效

node.js - Mocha 正在复制对象的值,因此无法更新它

javascript - 是否可以在 Flow 中导入对象的推断类型?

javascript - 不同变量的单一数据类型