首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确创建箭头函数中的逻辑单元测试

如何正确创建箭头函数中的逻辑单元测试
EN

Stack Overflow用户
提问于 2021-04-13 21:22:47
回答 1查看 232关注 0票数 0

我正在开发一个现有的NodeJS web服务,它使用HapiJS、HapiJS和Sinon一起进行测试。该服务使用massiveJs连接到Postgres。有一个由其他人实现的方法,它没有单元测试。现在我正在重用这个方法,我想为它实现一些单元测试。该方法在其中执行一个massivejs事务,并持久化到多个表。

代码语言:javascript
复制
async createSomething(payload) {

    const { code, member } = payload;

    const foundCompany = await this.rawDb.ethnics.tenants.findOne({ code });

    if (foundCompany && foundCompany.companyId) {

        const { companyId } = foundCompany;
        const { foreignId } = member;

        return await this.rawDb.withTransaction(async (tx) => {

            const foundMember = await tx.ethnics.members.findOne({ foreign_id: foreignId, company_id: companyId });

            if (!foundMember) {

                //some business logic...
                const newMember = await tx.ethnics.members.insert(member);
                //more business logic persisting to other tables...
                return newMember;
            }
        });
    }
}

问题是,我不知道如何只在箭头函数中存根,而不对整个箭头函数进行存根。我只想把tx的电话记下来。我也不想使用数据库,而是使用rawDb属性的存根。从单元测试的角度来看,这是可行的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-05 22:06:05

是的是可行的。有两种选择:

  1. 存根MassiveJS方法直接。

存根大量方法findOne的示例

代码语言:javascript
复制
const massive = require('massive');
const sinon = require('sinon');

// Stub massive.Readable class method findOne.
// You need to find where is the real method findOne and stub it.
const stub = sinon.stub(massive.Readable, 'findOne');
// You can resolve it.
stub.resolves();
// Or you can throw it.
stub.throws(new Error('xxx'));
  1. 在内存中使用pg进行测试。

仅仅为了测试目的,您可以使用像:测试-pg-池皮格梅这样的模块。测试之前,启动测试pg,测试完成后,销毁它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67082570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档