Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 在同一文件中定义的Sinon stubbing helper方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我有一个文件,用户数据库,看起来像这样

export function foo(id: number): Promise<Boolean> {
  return new Promise<Boolean>((resolve,reject) => {
    findSomething(id)
    .then((data) => {
      //do something with data
    })
  }
}

export function findSomething(id: number): Promise<Object> {
  return new Promise<Object> ((resolve,reject) => {
    let query = 'SELECT * FROM user';
    db.executeQuery(query);
    .then(data) => {
      if(data.length < 1) { reject(new Error('whoops')); }
      resolve(data);
    },(err) => {
      reject(err);
    })
  })
}

所以我正在使用Sinon为外部函数foo编写单元测试,因此我想将它调用函数存根,findSomething.我这样做如下:

import * as @R_262_9004@db from '../../src/user-database';

describe('POST /someEndpoint',() => {
  describe('when successful',() => {
    let stub;

    beforeEach(function() {
      stub = sinon.stub(@R_262_9004@db,'findSomething');
    });

    afterEach(function() {
      stub.restore();
    }); 

    it('should respond with 200',function(donE) {
      stub.returns(anObjectIPredefine);

      request(server)
        .post(basePath)
        .send(aPayloadIPredefine)
        .expect(200,donE);
    });
  }
}

当我运行测试时,我没有看到我告诉存根的对象返回此stub.returns(anObjectIPredefine).实际上我将函数findSomething正常执行并从dB中获取数据.有什么明显的我做错了吗?我唯一的猜测是stub = sinon.stub(@R_262_9004@db,’findSomething’)不是用于在与被测试函数相同的范围内定义函数的正确语法.我无法找到替代语法.

解决方法

所以我最终做的是将我希望存根的函数移动到另一个文件.完成后,存根按预期工作.可能不是最好的解决方案,但绝对可以为类似情况下的任何人提供快速创可贴.

大佬总结

以上是大佬教程为你收集整理的node.js – 在同一文件中定义的Sinon stubbing helper方法全部内容,希望文章能够帮你解决node.js – 在同一文件中定义的Sinon stubbing helper方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。