[英]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.