如何在函数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 吗?
我想测试 .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
.
这是我的测试:
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 吗?