簡體   English   中英

Mocha在運行測試時無法識別全局變量

[英]Mocha not recognizing a global variable when running tests

在我的應用程序中,我在自己的文件中設置了一個全局變量。 在我的應用程序中可以正常工作,但是會破壞需要它的文件的單元測試。

它基本上在根級別上,並且在它自己的文件中,如下所示:

global.MY_GLOBAL_VAR = require('my-global-var').MY_GLOBAL_VAR

稍后將其導入到我需要測試的文件中,並且如前所述,在正常運行該應用程序時可以正常工作。 所以看起來像這樣:

// doSomething.js
require('MY_GLOBAL_VAR')

module.exports = function doSomething () {
// do stuff
}

因此,當我嘗試為doSomething.js編寫單元測試時,出現以下錯誤:

    1) "before all" hook
    GET /
     { TypeError: MY_GLOBAL_VAR is not a constructor

當我在console.log上執行操作時,它的值返回為undefined 有趣的是,如果我運行node doSomething ,則MY_GLOBAL_VAR符合預期(該函數)。

我試圖修改我的原始測試命令,但無濟於事。 當前是這樣的:

“ test”:“ mocha --- globals MY_GLOBAL_VAR -require @ babel / register --require dotenv / config --require ./MY_GLOBAL_VAR.js --watch-extensions js \\” {,!(node_modules)/ ** /} * .test.js \\“”

(最初它沒有--globals args或MY_GLOBAL_VAR文件的要求。

關於如何解決這個問題的任何想法?

我已經找到解決問題的方法。 不是Mocha不能識別全局變量,而是babel。

package.json無需進行任何更改,我能夠將測試腳本恢復為原始狀態。

所有這一切必須做的,是添加MY_GLOBAL_VAR.js文件到ignore我的列表中.babelrc文件。 所以基本上:

// in .babelrc
{
  "plugins": [
     // [...] my plugins
  ],
  "ignore": [
    "./MY_GLOBAL_VAR.js"
  ],
  "presets": [
    "@babel/preset-env"
  ]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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