我有一個 NodeJS 應用程式。很長一段時間以來,我一直在使用 Mocha 來運行測驗。我只是有一個 package.json 之類的
"dev": "node index --env=dev",
"start": "node index",
"test": "mocha './test/**/*.spec' --env=dev"
現在因為各種原因改用Jest,測驗腳本變得簡單了
"test":"jest"
在我的測驗套件中,我啟動了我的應用程式的一個實體。在我的應用程式中的功能中,有基于環境的決定。簡化示例:
const ProcessArgs = require("minimist")(process.argv);
export function uploadImage(image){
if(ProcessArgs.env === "dev"){
return writeToLocalTestFolder(image);
}
else {
return uploadToCloud(image);
}
}
所以這過去常常看--env=devarg,但現在已經不存在了。(如果我嘗試添加--env=dev到 Jest 中,那將是一個完全不同的問題)。事實上,我確實正確地將 Heroku 的秘密用于我的實際重要環境變數(如 API 密鑰等),但我現在似乎被困在這里,我應該如何告訴 Jest 它在什么環境中,因為它需要env=node正常作業。
uj5u.com熱心網友回復:
模擬出環境變數Jest有點棘手,因為在您要匯入的代碼被評估之前,真的沒有辦法模擬出它們。但是,有一個方便的解決方法。您可以模擬包含環境變數的庫并讓它專門回傳您需要的內容。
參考您的示例,您可以minimist使用以下代碼模擬回傳的環境變數(確保在describe測驗套件之前使用它:
jest.mock('minimist', () => {
return () => ({ env: 'dev'});
});
if(ProcessArgs.env === "dev"){條件檢查應按預期運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/489804.html
