使用Jasmine进行单元测试-无法spyOn模拟方法

时间:2018-09-12 16:01:27

标签: javascript jasmine karma-jasmine

我正在编写一个JavaScript库,该JavaScript库在另一个js库上调用方法。 大多数时候,我会创建第三方库的模拟函数并对其进行监视。但是,它似乎不起作用。

例如:

mymain.js

export const checkForExternalFunc = () => {
  try {
   return com.externalFunc
  } catch (error) {
    return false
  }
}

mymain_spec.js

import { checkForExternalFunc } from './src';

describe('checkForExternalFunc', () => {
 let com = com || {};
 com.externalFunc = function () {
   return true;
 };

 it('return the function when com.externalFunc is present', () => {
  spyOn(com, "externalFunc");

  let check = checkForExternalFunc();
  expect(check).toBe(jasmine.Any(function));
 });
})

这会给我一个错误

ReferenceError: com is not defined

第三部分库中的功能

var com = com || {};
com.externalFunc = function () {
   // return something
};

任何建议我该如何处理?我也与Sinon一起对Stub进行了一些研究,但不确定如何正确使用它。任何帮助将不胜感激。谢谢!

注意:我使用webpack + babel,业力,茉莉花来设置项目。

1 个答案:

答案 0 :(得分:0)

感谢@AdityaBhave指出。我只需要确保我的模拟函数和实际的函数实际上是相同的。请参阅上面的评论。