Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

Esta é uma postagem traduzida por IA.

제이의 블로그

Simulando o Prisma Client para testes unitários no NestJS

  • Idioma de escrita: Coreana
  • País de referência: Todos os países country-flag

Selecionar idioma

  • Português
  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar

Texto resumido pela IA durumis

  • É importante remover dependências externas para testes unitários.
  • Você pode simular o Prisma Client do Prisma ORM usando o pacote jest-mock-extended.
  • A escrita de testes unitários ficou mais fácil após a simulação.

Como regra geral, os testes unitários de aplicativos devem ser realizados em isolamento, portanto, é aconselhável remover dependências externas que podem afetar o resultado do teste, como E/S de rede ou bancos de dados.

Estou escrevendo este post porque estou usando o Prisma ORM em um projeto de brinquedo e quero registrar como fazer mock do Prisma Client para fins de testes unitários.


Instalando o pacote jest-mock-extended

O pacote recomendado na documentação oficial do Prisma é instalado com o comando acima.


Fazendo Mock do Prisma Client

describe('UserService', () => {
let service: UserService;
let prismaMock: DeepMockProxy;

beforeEach(async () => {
    prismaMock = mockDeep();

    const module: TestingModule = await Test.createTestingModule({
      providers: [
        UserService,
        {
              provide: PrismaService,
              useValue: prismaMock,
        },
      ],
    }).compile();

    service = module.get(UserService);


 Exemplo de código de teste unitário

  describe('create', () => {
    it('Deve retornar as informações do usuário quando a criação do usuário for bem-sucedida.', async () => {
        // Arrange
        const newUser = {
            email: 'test@test.com',
            password: 'test1234',
        };
        
          prismaMock.user.create.mockResolvedValue({
            id: 1,
            email: 'test@test.com',
            password: 'test1234',
          });

          // Act
          const result = await service.create(newUser);

          // Assert
          expect(result).toEqual({
            id: 1,
            email: 'test@test.com',
            password: 'test1234',
          });
    });

Depois de fazer mock, o suporte ao tipo também é fornecido, o que tornou a escrita de testes unitários muito mais fácil.

Jay
제이의 블로그
1인분이 목표인 초보 개발자
Jay
Modelagem de Dados Conceitual do Projeto Kanban Board 1 O projeto Kanban Board, que foi uma tarefa de estágio para desenvolvedores de back-end do Wanted, foi implementado novamente com o objetivo de praticar modelagem de dados relacionais e realizar modelagem de dados conceitual. O processo envolveu a separaçã

9 de abril de 2024

Modelagem de dados relacional A modelagem de dados relacional é o processo de dividir as informações do mundo real em tabelas e dados, passando pelas etapas de análise de requisitos, modelagem de dados conceitual, modelagem de dados lógica e modelagem de dados física. O diagrama ERD,

8 de abril de 2024

Modelagem de Dados Lógica A modelagem de dados lógica é o processo de transformar a modelagem de dados conceitual de acordo com o paradigma de banco de dados relacional, tratando relacionamentos 1:1, 1:N, N:M e garantindo a integridade dos dados por meio da normalização. Ele passa

9 de abril de 2024

O que deve ser testado no desenvolvimento de aplicativos para 1 pessoa? Aprenda como definir prioridades de teste e criar uma estratégia de teste eficaz para o desenvolvimento de aplicativos. O autor prioriza testes de pessoas, testes de integração, testes de unidade, testes de aceitação/widget, enfatizando a eficiência de te
Alien Story
Alien Story
Alien Story
Alien Story
Alien Story

16 de maio de 2024

[Effective Java] Item 5: Use dependency injection instead of explicitly specifying resources Se uma classe depender de recursos externos, é melhor não usar singletons e classes de utilitário estáticas. A injeção de dependência pode ser usada para melhorar a flexibilidade, reusabilidade e facilidade de teste da classe, e o padrão de fábrica pode s
제이온
제이온
제이온
제이온

28 de abril de 2024

[Effective Java] Item 3. Garanta o Singleton com um construtor privado ou um tipo de enumeração Este artigo apresenta três métodos para implementar o padrão Singleton em Java (membro estático público, método de fábrica estático e tipo de enumeração), e discute os prós e contras de cada método, bem como as precauções a serem tomadas ao serializar. El
제이온
제이온
제이온
제이온

27 de abril de 2024

Criando um CLI elegante com Rust Este artigo descreve como implementar aplicações CLI com Rust. Usando as bibliotecas clap e ratatui, criamos um programa CLI com recursos de login e logout. Abordamos o desenvolvimento geral de CLI baseado em Rust, incluindo a definição de opções de coman
곽경직
곽경직
곽경직
곽경직
곽경직

13 de março de 2024

[Não graduado, sobrevivendo como desenvolvedor] 14. Resumo do conteúdo da entrevista técnica frequente para desenvolvedores juniores Guia de preparação para entrevista técnica para desenvolvedores juniores. Área de memória principal, estrutura de dados, RDBMS e NoSQL, orientação de procedimentos e orientação de objetos, sobreposição e sobrecarga, algoritmo de substituição de página, pr
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

3 de abril de 2024

[Effective Java] Item 4. Use a private constructor to prevent instantiation As for utility classes that contain only static methods and fields, it is good practice to set the access modifier of the constructor to private to prevent instantiation. This prevents users from mistaking the constructor for a automatically generated one
제이온
제이온
제이온
제이온

28 de abril de 2024