[英]using flowtype to statically check mocha test code
我有一些复杂的Mocha代码,我想静态检查FlowType,为什么不呢?
下面是一个最小的repro:
/* @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检测到它。
我不确定这些问题是否与摩卡有关,但我不认为我可以自信地用更广泛的术语来构建问题,所以我的问题是:
describe
每一行it
? 第三方库通常需要定义文件,即包含给定库的所有类型信息的文件。
在这种情况下,您需要mocha的定义文件,幸运的是由flow-typed提供。
安装它
npm install -g flow-typed
然后运行
flow-typed install
它将自动安装依赖项的所有可用定义文件,包括mocha。
您可以简单地声明流describe
, it
变量。
/* @flow */
declare var describe: any;
declare var it: any;
describe('it', function () {
it('fails', function() {
const s: number = 'flow spots this error';
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.