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