亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

sinon沒有檢測到在promise內部調用的私有函數

sinon沒有檢測到在promise內部調用的私有函數

RISEBY 2021-08-20 17:25:02
我對 sinon 不熟悉并重新布線。我正在嘗試檢查是否在承諾中調用了私有函數。被調用的私有函數被調用,但 sinon 沒有檢測到調用。下面是我的代碼剪斷。文件.test.jsvar fileController = rewire('./file')var stub = sinon.stub().returns("abc")fileController.__set__('privFunc', stub)fileController.sampleFunc()expect(stub).to.be.called文件.jslet otherFile = require('otherFile')var privFunc = function(data) {}var sampleFunc = function() {    otherFile.buildSomeThing.then(function(data) {        privFunc(data)    })}module.exports = {sampleFunc}在上面截取的代碼中,privFunc 實際上是被調用的,即。存根被調用,但 sinon 沒有檢測到調用。var privFunc = function(data) {}var sampleFunc = function() {    privFunc(data)}module.exports = {sampleFunc}但是上面的這個片段工作正常。即。直接調用私有函數時
查看完整描述

1 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

你otherFile.buildSomeThing是異步的,你需要在檢查privFunc存根是否被調用之前等待它。


例如:


文件.js


let otherFile = require('otherFile')


var privFunc = function(data) {


}


var sampleFunc = function() {

    return otherFile.buildSomeThing.then(function(data) {

        privFunc(data)

    })

}


module.exports = {sampleFunc}

文件.test.js


var fileController = rewire('./file')


var stub = sinon.stub().returns("abc")

fileController.__set__('privFunc', stub)

fileController.sampleFunc().then(() => {

  expect(stub).to.have.been.called;

});

如果你使用 mocha,你可以使用這樣的東西:


describe('file.js test cases', () => {

  let stub, reset;

  let fileController = rewire('./file');


  beforeEach(() => {

    stub = sinon.stub().returns("abc");

    reset = fileController.__set__('privFunc', stub);

  });


  afterEach(() => {

    reset();

  });


  it('sampleFunc calls privFunc', async () => {

    await fileController.sampleFunc();

    expect(stub).to.have.been.called;

  });

});


查看完整回答
反對 回復 2021-08-20
  • 1 回答
  • 0 關注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號