如何使spyOn函数返回承诺

时间:2018-08-07 06:22:11

标签: javascript node.js jasmine istanbul

我正在尝试为以下代码编写单元测试用例

//index.js   
var d = require('./lib/someFile.js');
var i = require('./lib/someFile2.js');

d.download(url, certPath, logger)
// Import into custom keystore
  .then(function () {
    debugger;
    return i.i1(java, certPath, dssAppServer, logger);
  })
  // Import into java keystore
  .then(function () {
    return i.i2(java, certPath, dssAppServer, logger);
  })
  // Import into windows root store
  .then(function () {
    return i.i3(certPath, logger);
  })
  .then(function () {
    logger.info('Successfully install DSS certificate.');
    done(0);
  }, function (err) {
    logger.error(err);
    done(-2);
  }).done();

以下是我编写的单元测试用例

//index-spec.js     
it('Should import certificates into appropriate locations', function () {        
  var idc = new Module('the file containing the above code', null);
  idc.exports = context;
  var promise = q.resolve(true);
  spyOn(certUtil, 'findJavaPath').and.callFake(function(logger, cb) { 
    cb(null);
  });

  spyOn(d, 'download').and.callThrough();
  spyOn(i, 'i1').and.returnValue(promise);
  spyOn(i, 'i2').and.returnValue(promise);
  spyOn(i, 'i3').and.returnValue(promise);
  idc.load(file)     
});

上面的测试用例运行良好,但是没有调用方法i1,i2和i3,因此d.download之后没有覆盖。我使用的是茉莉花和伊斯坦布尔。

0 个答案:

没有答案