它是什么样的测试?嵌套
What kind of test is it ? Nestjs
我正在尝试测试我的 nestjs 应用程序,但我不太确定我必须编写什么样的测试,我想测试我的服务,所以为了测试它我正在使用提供的函数 createTestingModule来自 nestjs,这是我的代码
beforeAll(async () => {
const moduleRef = await Test.createTestingModule({
providers: [DeliveryManService],
imports: [
TypeOrmModule.forFeature([UserRepository, DeliveryManRepository]),
PostgresProviderModule,
],
}).compile();
service = moduleRef.get<DeliveryManService>(DeliveryManService);
});
但不幸的是,我在看其他人的编码,他们没有直接使用 typeorm 存储库,而是使用 mock 来做这些事情,所以我想...
我的测试没用吗?
我应该只使用 mock 而不是 typeorm 提供程序来编写测试吗?
我写了什么样的测试?
编辑这些是我的测试:
it('should be defined', () => {
expect(service).toBeDefined();
});
it('should save and return a new delivery man', async () => {
const deliveryMan = await service.preRegister(preRegister);
expect(deliveryMan).toBeDefined();
expect(deliveryMan.id).toBeDefined();
});
it('should return an array of delivery man', async () => {
const deliveryMans = await service.findAll({ page: 1, limit: 100 });
expect(deliveryMans).toBeDefined();
expect(deliveryMans).toBeInstanceOf(Array);
expect(deliveryMans.length).toBeGreaterThanOrEqual(1);
});
如果您的测试实际上与您的数据库对话,那么您有一个集成测试,即测试您的服务 class 与数据库之间的集成。通常你要小心它们的数量,因为它们需要一个数据库并且通常会修改该数据库中的数据,这意味着如果配置不正确,你最终可能会修改错误的数据。
单元测试最终会模拟数据库 as shown in this repo here。这些测试通常最多只需要几秒钟,而集成测试可能需要更长的时间,因为必须通过网络发送数据以建立与数据库的连接并检索查询结果。
我正在尝试测试我的 nestjs 应用程序,但我不太确定我必须编写什么样的测试,我想测试我的服务,所以为了测试它我正在使用提供的函数 createTestingModule来自 nestjs,这是我的代码
beforeAll(async () => {
const moduleRef = await Test.createTestingModule({
providers: [DeliveryManService],
imports: [
TypeOrmModule.forFeature([UserRepository, DeliveryManRepository]),
PostgresProviderModule,
],
}).compile();
service = moduleRef.get<DeliveryManService>(DeliveryManService);
});
但不幸的是,我在看其他人的编码,他们没有直接使用 typeorm 存储库,而是使用 mock 来做这些事情,所以我想...
我的测试没用吗?
我应该只使用 mock 而不是 typeorm 提供程序来编写测试吗?
我写了什么样的测试?
编辑这些是我的测试:
it('should be defined', () => {
expect(service).toBeDefined();
});
it('should save and return a new delivery man', async () => {
const deliveryMan = await service.preRegister(preRegister);
expect(deliveryMan).toBeDefined();
expect(deliveryMan.id).toBeDefined();
});
it('should return an array of delivery man', async () => {
const deliveryMans = await service.findAll({ page: 1, limit: 100 });
expect(deliveryMans).toBeDefined();
expect(deliveryMans).toBeInstanceOf(Array);
expect(deliveryMans.length).toBeGreaterThanOrEqual(1);
});
如果您的测试实际上与您的数据库对话,那么您有一个集成测试,即测试您的服务 class 与数据库之间的集成。通常你要小心它们的数量,因为它们需要一个数据库并且通常会修改该数据库中的数据,这意味着如果配置不正确,你最终可能会修改错误的数据。
单元测试最终会模拟数据库 as shown in this repo here。这些测试通常最多只需要几秒钟,而集成测试可能需要更长的时间,因为必须通过网络发送数据以建立与数据库的连接并检索查询结果。