Проблемы с производительностью тестирования NestJs - PullRequest
0 голосов
/ 06 июля 2019

Я начал писать некоторые тесты для нашего приложения, если у меня возникли проблемы с его производительностью.

Один этот тест занимает до 10,842 с!(в соответствии с выводом Jest)

Кажется, что-то с внедрением макетированного репозитория, поскольку стандартный тест, который идет с CLI для гнезда, прошел гладко.Но так как я смоделировал весь репозиторий, у меня не должно быть задержек, связанных с подключением к БД, поэтому я в замешательстве.

import { ApplicationService } from '../application.service';
import { ApplicationRepository } from '../application.repository';
import { Test } from '@nestjs/testing';
import { ApplicationController } from '../application.controller';
import { ApplicationDTO } from '../DTO/applicationDTO';

describe('ApplicationService', () => {
  let service: ApplicationService;
  let mockRepo;
  beforeEach(async () => {
    mockRepo = {
      applications: [
      {id: 1, type: 'DATABASE', name: 'WhatsApp', access: 'ACCESS', user_access: 'HIGH', group: 'Nice', connection: 'aaaaaaaaaaaaaaa'},
      {id: 2, type: 'DATABASE', name: 'Telegram', access: 'ACCESS', user_access: 'LOW', group: 'Badguy', connection: 'aaaaaaaaaaaaaaa'},
    ],
    find() {
      return this.applications;
    },
    create(application) {
      this.applications.push(application);
      return { save() {
        return;
      }};
    },
    delete(id) {
      this.applications = this.applications.splice(0, id);
    },
  };
    const mockRepositoryProvider = {
      provide: ApplicationRepository,
      useValue: mockRepo,
    };
    const module = await Test.createTestingModule({
      controllers: [ApplicationController],
      providers: [ApplicationService, mockRepositoryProvider],
    }).compile();
    service = module.get<ApplicationService>(ApplicationService);
  });

  it('should be defined', () => {
    expect(service).toBeDefined();
  });

  it('should return all applications', () => {
    expect(service.findAll()).toBe(mockRepo.applications);
  });

  it('should add a application', () => {
    const application = new ApplicationDTO(
      { id: 4, type: 'DATABASE', name: 'WhatsApp', access: 'ACCESS', user_access: 'ACCESS', group: 'Nice', connection: 'aaaaaaaaaaaaaaa'},
      );
    service.add(application);
    expect(service.findAll()).toContainEqual(
      expect.objectContaining(
        { id: 4, type: 'DATABASE', name: 'WhatsApp', access: 'ACCESS', user_access: 'ACCESS', group: 'Nice', connection: 'aaaaaaaaaaaaaaa'},
    ));
  });
});

1 Ответ

0 голосов
/ 07 июля 2019

Я думаю, все в порядке. Около 10 секунд требуется для запуска приложения nest, и если вы добавите больше тестов, время существенно не увеличится.

...