Sinon存根无法使用导出功能

时间:2019-08-16 05:58:09

标签: javascript unit-testing mocha sinon chai

我尝试对重新加载网页的函数进行存根。

export function reloadPage() {
    window.location.reload();
}

这是我对函数进行存根的方式:

import * as ref from 'file/where/reloadpage/is/defined';

describe('...', function () {
    ...
    before(function () {
       this.reloadStub = sinon.stub(ref, 'reloadPage');
    });
});

它仍然没有正确地对方法进行存根。我的测试抛出“整页重新加载”错误。

我不知道我在做什么错。

1 个答案:

答案 0 :(得分:0)

这是一个有效的示例:

index.ts

export function reloadPage() {
  console.log('reload');
  window.location.reload();
}

index.spec.ts

import * as ref from './';
import sinon from 'sinon';
import { expect } from 'chai';

describe('57519517', () => {
  let reloadStub;
  before(() => {
    reloadStub = sinon.stub(ref, 'reloadPage');
  });

  it('should mock reload page', () => {
    const logSpy = sinon.spy(console, 'log');
    ref.reloadPage();
    expect(reloadStub.calledOnce).to.be.true;
    expect(logSpy.notCalled).to.be.true;
  });
});

单元测试结果:

 57519517
    ✓ should mock reload page


  1 passing (12ms)

源代码:https://github.com/mrdulin/mocha-chai-sinon-codelab/tree/master/src/stackoverflow/57519517