簡體   English   中英

如何使用mocha運行一些初始化代碼

[英]how to run some initialization code with mocha

beforebeforeEachafterafter afterEach但是如何在所有測試之前運行一些代碼。

換句話說,我這樣的文件

test
  test1.js
  test2.js
  test3.js

我用它來運行測試

mocha --recursive

我不想在每個測試文件中放一個before 我需要一個beforeAllTests--init=setup.js或者我可以在執行任何測試之前執行一些JavaScript的東西。 在這種特殊情況下,我必須在測試運行之前配置我的系統的日志記錄模塊

有沒有辦法調用一些在所有測試之前執行的init函數?

如果只需要初始化代碼,那么mocha -r ./init可能就足夠了。 甚至把它放入test/mocha.opts

--require ./test/init
--ui tdd

但是如果你需要拆卸行動,那就有兩難,例如:

var app = require('../app.js');
app.listen(process.env.WEB_PORT);

after(function(done) {
    var db = mongoskin.db(process.env.DB_URL, {safe:true});
    db.dropDatabase(function(err) {
        expect(err).to.not.be.ok();
        db.close(done);
    });
});

你會得到錯誤:

ReferenceError: after is not defined

我猜mocha在處理'--require'時還沒有初始化。

我最近在我們的節點應用程序中找到了它:

  1. 重新組織測試文件如下(測試/下只有一個js文件“bootstrap.js”,並將所有測試文件放在子文件夾中):
    \n    測試\n    ├──unit\n    │├──test1\n    │├──test2\n    │└──......\n    ├──integeration\n    │├──test1\n    │├──test2\n    │└──......\n    ├──bootstrap.js\n    └──mocha.opts\n
  2. 將'--recursive'放入mocha.opts
  3. 將您的初始化代碼放入bootstrap.js(全局之前/之后工作!)

完成。

這是官方摩卡解決方案:

Mocha使用額外的選項或參數進行測試

它允許您定義可以的代碼:

1 - 在npm start和npm test之前執行

2 - 僅在npm測試之前執行

暫無
暫無

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

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