簡體   English   中英

Mocha.js - 如何保存全局變量?

[英]Mocha.js - How to save a global variable?

我正在使用 Mocha.js 在 Node.js - Express.js - Firebase 中進行測試

我需要來自 Firebase 的令牌來訪問 API 端點,我的所有文件中都有一個 before 掛鈎,但經過大約 250 次測試,可能多次調用身份驗證端點,我的速率受到 firebase 的限制。

我想獲得一次令牌並在我的所有測試中使用它。

測試分布在不同的文件中,我有一個需要所有測試的 index.js。 我知道 Root Level Hooks,但如何保存令牌並在我的所有單獨文件中使用它?

謝謝!

您可以創建一個獲取令牌的 function。 然后調用它。 然后僅在此之后創建您的測試套件

function getToken(callback) {
  //
}

// define tests
function allTests(token) {
    describe(xxxxxx, function () {
        it(xxxxxxxxx, function() {
            //
        })
    });
}

// start all
getToken(function(token) {
    allTests(token);
});

我設法自己解決了它,如果有人需要有關如何解決它的答案,請看一下。

我有多個文件,我們在其中編寫單元測試,我們將它們合並到我們為測試執行的 index.spec.js 中($ mocha index.spec.js)

我創建了一個如下所示的實用程序文件:

let token;
(() => { token = getYourToken() })()
module.exports = {
getToken: () => {
    return new Promise((resolve) => {
        const interval = setInterval(() => {
            if (token) {
                clearInterval(interval);
                resolve(token);
            }
        }, 100);
    });
}
};

基本上,它是 singleton,在 index.spec.js 中我需要這個文件,執行一次“getYourToken()”(在此處添加您的邏輯以獲取令牌)。 然后我將它存儲在一個變量中,然后我導出。 在導出中,我使用了一個區間,因為我當前的代碼沒有使用承諾,使用你的最佳實踐方法,區間 + Promise 為我工作。

這樣我在我的測試中需要這個文件並獲得我在開始時獲得的令牌一次,避免了速率限制和 firebase 的任何問題。

  • 在測試根目錄中創建一個 JSON 文件。
  • 導入文件。
  • Append 具有令牌值的令牌屬性。
  • 然后將其導入任何地方以訪問令牌屬性。

暫無
暫無

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

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