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

Ceci est un post traduit par IA.

제이의 블로그

Moquer le client Prisma pour les tests unitaires dans NestJS

Choisir la langue

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

Texte résumé par l'IA durumis

  • Il est important de supprimer les dépendances externes pour les tests unitaires.
  • Vous pouvez moquer facilement le client Prisma de Prisma ORM à l'aide du package jest-mock-extended.
  • L'écriture de tests unitaires est devenue plus facile après la moquerie.

En principe, les tests unitaires au niveau de l'application doivent être effectués dans un environnement isolé. Il est donc préférable d'éliminer les dépendances externes telles que les E/S réseau ou les bases de données qui pourraient affecter les résultats des tests.

Je suis en train d'écrire cet article pour enregistrer une méthode simple de mocking de Prisma Client pour les tests unitaires, car j'utilise Prisma ORM dans mon projet de jouet.


Installation du package jest-mock-extended

Le package recommandé dans la documentation officielle de Prisma est installé via la commande ci-dessus.


Mocking de 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);


 Exemple de code de test unitaire

  describe('create', () => {
    it('doit renvoyer les informations de l'utilisateur si la création de l'utilisateur réussit.', 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',
          });
    });

Après le mocking, le typage est également pris en charge, ce qui rend la rédaction de tests unitaires très pratique.

Jay
제이의 블로그
1인분이 목표인 초보 개발자
Jay
Modélisation de données conceptuelles pour le projet de tableau Kanban 1 J'ai effectué une modélisation de données conceptuelle pour le projet de tableau Kanban, qui était une tâche pour le stage d'ingénieur backend de Wanted, dans le but de m'entraîner à la modélisation de données relationnelles. J'ai terminé la modélisation

9 avril 2024

Modélisation des données relationnelles La modélisation des données relationnelles consiste à diviser les informations du monde réel en tables et en données, et comprend les étapes suivantes : analyse des exigences, modélisation des données conceptuelles, modélisation des données logiques et mo

8 avril 2024

Modélisation de données physique La modélisation de données physiques est le processus de conception des tables d'une base de données relationnelle pour une utilisation réelle, en visant l'optimisation des performances grâce à l'efficacité de l'espace de stockage, le partitionnement des

9 avril 2024

[Effective Java] Item 5. Utilisez l'injection de dépendances au lieu de spécifier les ressources Si une classe dépend de ressources externes, il est préférable d'éviter d'utiliser les singletons et les classes utilitaires statiques. L'injection de dépendances peut améliorer la flexibilité, la réutilisabilité et la testabilité de la classe, et l'utili
제이온
제이온
제이온
제이온

28 avril 2024

Le développement d'applications par une seule personne : quels tests faut-il effectuer ? Découvrez comment définir les priorités de test et élaborer une stratégie de test efficace pour le développement d'applications. L'auteur recommande de prioriser les tests d'utilisabilité, les tests d'intégration, les tests unitaires et les tests d'accept
Alien Story
Alien Story
Alien Story
Alien Story
Alien Story

16 mai 2024

Créer une CLI élégante avec Rust Cet article explique comment implémenter une application CLI en Rust. Nous utiliserons les bibliothèques clap et ratatui pour créer un programme CLI avec des fonctionnalités de connexion et de déconnexion. Nous présentons les aspects clés du développement
곽경직
곽경직
곽경직
곽경직
곽경직

13 mars 2024

[Effective Java] Item 3. Garantir un singleton avec un constructeur privé ou un type énuméré Cet article présente trois méthodes pour implémenter le modèle de conception singleton en Java (membre public statique, méthode d'usine statique, type énuméré) et explique les avantages et les inconvénients de chaque méthode, ainsi que les précautions à p
제이온
제이온
제이온
제이온

27 avril 2024

[Next.js] Injection d'environnement d'exécution Découvrez comment configurer des variables d'environnement dans Next.js après la compilation. Nous vous présentons comment installer cross-env et modifier les scripts, ce qui est facile à suivre même pour les utilisateurs de Windows. Cela peut être utilis
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit

20 mars 2024

[Observabilité] Défis liés à l'agent de collecte de journaux Vector Vector, un outil de collecte et de traitement des journaux développé par DataDog, est écrit en Rust, ce qui le rend plus facile à utiliser pour écrire du code de transformation de journaux que Otel. Il prend en charge l'intégration avec Loki dans un envir
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit

9 mars 2024