是什么样的测试?Nestjs



我试图测试我的nestjs应用程序,但我不太确定我要写什么样的测试,我想测试我的服务,所以要测试它,我使用由nestjs提供的函数createTestingModule,这是我的代码

beforeAll(async () => {
const moduleRef = await Test.createTestingModule({
providers: [DeliveryManService],
imports: [
TypeOrmModule.forFeature([UserRepository, DeliveryManRepository]),
PostgresProviderModule,
],
}).compile();
service = moduleRef.get<DeliveryManService>(DeliveryManService);

});

但不幸的是,我看着其他人编码,而不是直接使用类型库他们使用模拟来做这些事情,所以我想…

我的测试没用吗?

我应该只使用mock而不是typeform provider来编写测试吗?

我写了什么类型的测试?

编辑:

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);
});

如果你有测试与数据库对话,那么你就有一个集成测试,那就是测试服务类和数据库之间的集成。通常情况下,你要小心这些选项的数量,因为它们需要一个数据库,并且通常会修改数据库中的数据,这意味着如果配置不正确,你可能最终会修改错误的数据。

一个单元测试最终会模拟数据库,如图所示。这些测试通常最多只需要几秒钟,而集成测试可能需要更长的时间,因为必须通过网络发送数据以建立与数据库的连接并检索查询结果。

最新更新