如何在函数typeorm nestjs中模拟变量

how to mock variable inside function typeorm nestjs

我想测试 .save into 2 的功能 table 但是在第二个查询中我必须使用第一个查询中的 id 这是我的服务。

async createBoth(createInput: CreateInput): Promise<SomeThing> {
    const data = await this.dataRepository.create(createInput);
    const data2 = {
        dataId: data.id,
        someInfo: 'test'
    };
    await this.data2Repository.create2(wallet);
}

正如您在我的函数中看到的那样,我首先将 2 个查询保存到 dataReposition,然后使用 data.id.

保存到 data2Repository

这是我的测试:

describe('create Boath', () => {
    it('should be createBoth', async () => {
        await service.createBoth(mockInput);
    });
});

出现错误:

Can't createBoth [ because I think It need to mock data.id ]

我认为,您在单元测试方面有点不对。当然,每个人对如何去做都有自己的偏好......但无论如何。

基本形式的单元测试是测试一个特定方法的逻辑,而不是它调用的方法(在这方面,编写可测试的代码也很重要)。

因此,在您的案例中,您想要模拟的是引用为 this.dataRepository 和 this.data2Repository 的 2 个对象。这些对象必须模拟 create() 方法。

这将允许您控制第一次调用返回的数据,并验证两次调用的调用参数是什么。

您的测试应该进行上述验证,否则除非调用彻底失败,否则它并没有真正测试太多。

说到这里,在您的代码中,您没有在声明后使用 data2 常量。您确定您需要传递给第二次调用的是“wallet”变量而不是 data2 吗?