在使用chai和sinon的方法中存根诺言

托比

我正在测试的功能大致如下:

  function doThing(data, callback) {

    externalService.post('send').request(data)
        .then(() => {
          if (callback) { callback(); }
        })
        .catch((message) => {
          logger.warn('warning message');
          if (callback) { callback(); }
        });
  }

我正在尝试使用Chai和Sinon进行测试。

我尝试按照不同的指南进行操作,我当前的咒语看起来像;

const thingBeingTested = require('thing-being-tested');
const chai = require('chai');
const sinon = require('sinon');
require('sinon-as-promised');
const sinonChai = require('sinon-chai');
const expect = chai.expect;

var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
chai.use(sinonChai);

describe('The Thing', () => {  
  it('should run a callback when requested and successful', done => {

    const externalService = { post: { request: sinon.stub() } };
    const callback = sinon.spy();

    externalService.post.request.resolves(callback);

    doThing({...}, callback);
    expect(callback).to.have.been.called;
    done();
  });
});

我无法被externalService.post正确地打断。任何帮助将不胜感激。

我对Chai和Sinon完全陌生,因此完全希望自己做点愚蠢的事情。

谢尔盖·拉平(Sergey Lapin)

您的doThing功能无法const externalService从测试中访问我会假设您的主文件有

const externalService = require('./external_service');

为拿到它,为实现它。

在测试中,您也应该得到相同的结果externalService

describe(..., () => {
    it(..., () => {
        // adjust the path accordingly
        const externalService = require('./external_service');

然后模拟其方法:

sinon.stub(externalService, 'post').returns({
    request: sinon.stub().resolves(callback)
});

然后,您可以调用doThing并分析结果。

测试完成后,请不要忘记通过以下方式还原原始文件post

externalService.post.restore();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Sinon存根get方法

来自分类Dev

使用sinon存根原型方法

来自分类Dev

如何使用 sinon 在被测函数中存根类方法?

来自分类Dev

在sinon存根中替换多种方法

来自分类Dev

sinon 存根在 then 调用 promise 中执行的方法

来自分类Dev

如何使用Sinon存根jQuery方法?

来自分类Dev

存根使用Sinon进行回调的方法

来自分类Dev

如何使用Sinon存根jQuery方法?

来自分类Dev

如何使用 sinon 存根对象方法?

来自分类Dev

在NodeJS中使用Mocha和Sinon存根ES6类方法

来自分类Dev

在NodeJS中使用Mocha和Sinon存根ES6类方法

来自分类Dev

如何使用Sinon在单元测试中对猫鼬模型方法进行存根

来自分类Dev

如何使用sinon.js在nodejs中存根全局依赖项的新实例方法

来自分类Dev

如何使用 Mocha、Chai 和 Sinon 正确测试 Express 控制器方法

来自分类Dev

如何使用 chai 和 sinon 测试方法是否重新抛出现有错误

来自分类Dev

sinon中具有异步回调的存根方法

来自分类Dev

如何使用Sinon.js存根动态对象方法?

来自分类Dev

在回调中使用方法的Sinon加密存根

来自分类Dev

无法使用Sinon在类中对箭头函数进行存根

来自分类Dev

sinon:如何存根实例方法

来自分类Dev

在sinon中存根依赖函数

来自分类Dev

使用Mocha,Chai,chaiAsPromised和Sinon测试JS Promise

来自分类Dev

用Sinon存根React组件方法

来自分类Dev

sinon.stub不存根原始方法

来自分类Dev

sinon无法正确恢复存根原型方法?

来自分类Dev

sinon无法正确恢复存根原型方法?

来自分类Dev

TypeScript中带有proxyquire和sinon的存根adm-zip

来自分类Dev

使用Sinon沙箱还原间谍/存根功能

来自分类Dev

在Mocha中使用sinon创建请求存根

Related 相关文章

热门标签

归档