簡體   English   中英

單元測試:如何存根包裝器 function

[英]Unit testing: how to stub a wrapper function

我是單元測試的新手,並試圖弄清楚如何存根包裝器 function。 我正在使用詩乃/摩卡。

如果我有一個 function 像:

const user = await User.findOne({ email: email });

我已經能夠像這樣存根它:

const userFindOneStub = sandbox.stub(User, 'findOne')
  .returns({
    _id: 'userId1234',
    companies: [
    {
      _id: 'companyId1234'
    }
  ]
});

但是我必須為我的 function 創建一個包裝器,以使用 Lodash 重新排序特定 function 的參數:

const userWrapper = _.rearg(UserFunction, [0, 1, 2, 3, 5, 4]);
const res = await userWrapper(someargs);

我可以存根UserFunction調用,但是如何在單元測試中存根userWrapper調用?

通過將 userWrapper 保存為模塊並遵循Sinon How to Stub Dependency

例如,您可以創建 userWrapper.js 來喜歡這個。

// File: userWrapper.js
// This is just sample
const userWrapper = () => {
  // In your case is: _.rearg(UserFunction, [0, 1, 2, 3, 5, 4]);
  console.log('real');
}
module.exports = { userWrapper };

然后你可以在你的主js中使用它來喜歡這個。

// File: main.js
const wrapper = require('./userWrapper.js');

module.exports = async function main () {
  // In your case: const res = await userWrapper();
  wrapper.userWrapper();
}

最后是測試文件。

// File: test.js
const sinon = require('sinon');
const wrapper = require('./userWrapper.js');
const main = require('./main.js');

it('Stub userWrapper', () => {
  const stub = sinon.stub(wrapper, 'userWrapper').callsFake(() => {
    console.log('fake');
  });

  main();

  sinon.assert.calledOnce(stub);
});

當您從終端使用 mocha 運行它時:

$ npx mocha test.js


fake
  ✓ Stub userWrapper

  1 passing (3ms)

暫無
暫無

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

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