簡體   English   中英

使用flowtype靜態檢查mocha測試代碼

[英]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檢測到它。

我不確定這些問題是否與摩卡有關,但我不認為我可以自信地用更廣泛的術語來構建問題,所以我的問題是:

  1. 我怎樣才能有流式檢查摩卡測試代碼而不會抑制包含describe每一行it
  2. 這是一個更廣泛的情況的實例,如果是這樣,后者會是什么?

第三方庫通常需要定義文件,即包含給定庫的所有類型信息的文件。

在這種情況下,您需要mocha的定義文件,幸運的是由flow-typed提供。

安裝它

npm install -g flow-typed

然后運行

flow-typed install 

它將自動安裝依賴項的所有可用定義文件,包括mocha。

您可以簡單地聲明流describeit變量。

/* @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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM