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

Đây là bài viết được dịch bởi AI.

제이의 블로그

Mock Prisma Client cho kiểm thử đơn vị trong NestJS

  • Ngôn ngữ viết: Tiếng Hàn Quốc
  • Quốc gia cơ sở: Tất cả các quốc gia country-flag

Chọn ngôn ngữ

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

Văn bản được tóm tắt bởi AI durumis

  • Loại bỏ các phụ thuộc bên ngoài là điều quan trọng cho việc kiểm thử đơn vị.
  • Bạn có thể dễ dàng mock Prisma Client của Prisma ORM bằng cách sử dụng gói jest-mock-extended.
  • Việc mock giúp viết kiểm thử đơn vị dễ dàng hơn.

Theo nguyên tắc, thử nghiệm đơn vị ứng dụng được thực hiện trong trạng thái cách ly, vì vậy nên loại bỏ các phụ thuộc bên ngoài có thể ảnh hưởng đến kết quả thử nghiệm, chẳng hạn như I/O mạng hoặc cơ sở dữ liệu.

Trong dự án đồ chơi này, tôi đã sử dụng Prisma ORM, vì vậy tôi đang viết bài viết này để ghi lại cách tôi đã tìm thấy để mô phỏng Prisma Client một cách đơn giản để thử nghiệm đơn vị.


Cài đặt gói jest-mock-extended

Gói được đề xuất trong tài liệu chính thức của Prisma được cài đặt bằng lệnh trên.


Mô phỏng 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);


 Ví dụ mã thử nghiệm đơn vị

  describe('create', () => {
    it('Nếu tạo người dùng thành công, thông tin người dùng phải được trả về.', async () => {
        // Sắp xếp
        const newUser = {
            email: 'test@test.com',
            password: 'test1234',
        };
        
          prismaMock.user.create.mockResolvedValue({
            id: 1,
            email: 'test@test.com',
            password: 'test1234',
          });

          // Hành động
          const result = await service.create(newUser);

          // Khẳng định
          expect(result).toEqual({
            id: 1,
            email: 'test@test.com',
            password: 'test1234',
          });
    });

Sau khi mô phỏng, kiểu dữ liệu cũng được hỗ trợ, điều này làm cho việc viết thử nghiệm đơn vị trở nên cực kỳ thuận tiện.

Jay
제이의 블로그
1인분이 목표인 초보 개발자
Jay
Mô hình dữ liệu khái niệm cho dự án Kanbanboard 1 Dự án Kanbanboard, một nhiệm vụ thực tập backend của Wanted, được triển khai lại với mục đích luyện tập mô hình hóa dữ liệu quan hệ và đã thực hiện mô hình hóa dữ liệu khái niệm. Quá trình tách thực thể, xác định định danh và xác định mối quan hệ đã hoàn

9 tháng 4, 2024

Mô hình hóa dữ liệu quan hệ Mô hình hóa dữ liệu quan hệ là quá trình phân chia thông tin trong thế giới thực thành bảng và dữ liệu, trải qua các giai đoạn phân tích yêu cầu, mô hình hóa dữ liệu khái niệm, mô hình hóa dữ liệu logic, mô hình hóa dữ liệu vật lý. Sử dụng ERD được biểu d

8 tháng 4, 2024

Mô hình hóa dữ liệu logic Mô hình hóa dữ liệu logic là quá trình chuyển đổi mô hình hóa dữ liệu khái niệm thành mô hình quan hệ của cơ sở dữ liệu theo các quy tắc ánh xạ, xử lý các mối quan hệ 1:1, 1:N, N:M và đảm bảo tính toàn vẹn của dữ liệu thông qua quy trình chuẩn hóa. Quy tr

9 tháng 4, 2024

Phát triển ứng dụng 1 người cần thực hiện những bài kiểm tra nào? Tìm hiểu cách ưu tiên các bài kiểm tra và lập chiến lược kiểm tra hiệu quả trong quá trình phát triển ứng dụng. Tác giả ưu tiên theo thứ tự là kiểm tra người dùng, kiểm tra tích hợp, kiểm tra đơn vị, kiểm tra chấp nhận/widget, nhấn mạnh hiệu quả thời gian
Alien Story
Alien Story
Alien Story
Alien Story
Alien Story

16 tháng 5, 2024

[Observability] Thách thức với bộ thu thập nhật ký Vector Vector, công cụ thu thập và xử lý nhật ký được phát triển bởi DataDog, được viết bằng Rust, cho phép dễ dàng viết mã chuyển đổi nhật ký hơn Otel và hỗ trợ tích hợp với Loki trong môi trường Kubernetes sử dụng Helm. Tuy nhiên, bạn có thể gặp phải những khó
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit

9 tháng 3, 2024

Quản lý kênh trên Slack, công cụ cộng tác Bài viết giới thiệu các mẹo quản lý kênh Slack. Tùy thuộc vào quy mô và văn hóa của công ty, bạn có thể quản lý hiệu quả các kênh trò chuyện chung, thông báo, kênh công khai/riêng tư theo bộ phận, kênh theo dự án, v.v. Và đặt tên kênh phản ánh rõ ràng tên
여행가고싶은블로거지만여행에대해다루진않을수있어요
여행가고싶은블로거지만여행에대해다루진않을수있어요
Hình ảnh minh họa về việc sắp xếp kênh Slack
여행가고싶은블로거지만여행에대해다루진않을수있어요
여행가고싶은블로거지만여행에대해다루진않을수있어요

8 tháng 2, 2024

[Không chuyên ngành, sống sót với tư cách nhà phát triển] 4. Các công ty mà nhà phát triển có thể tìm việc làm? Các công ty mà nhà phát triển có thể tìm việc làm chủ yếu được chia thành SI, giải pháp và công ty dịch vụ, mỗi loại có đặc điểm và độ khó tìm việc làm khác nhau. SI chịu trách nhiệm xây dựng hệ thống cho khách hàng và độ khó tìm việc làm tương đối dễ, cá
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

28 tháng 3, 2024

Phân loại dữ liệu là gì? Loại, ưu điểm và nhược điểm Phân loại dữ liệu là một quy trình thiết yếu để giúp máy tính hiểu dữ liệu, giống như việc gắn nhãn 'chó' và 'mèo' cho các bức ảnh chó và mèo tương ứng, gắn thẻ cho dữ liệu để cho phép học máy. Có nhiều phương thức phân loại khác nhau như hình chữ nhật, đ
세상 모든 정보
세상 모든 정보
세상 모든 정보
세상 모든 정보

29 tháng 3, 2024

Tạo CLI ấn tượng với Rust Bài viết này giải thích cách triển khai ứng dụng CLI bằng Rust. Sử dụng thư viện clap và ratatui, chúng ta sẽ tạo một chương trình CLI với chức năng đăng nhập, đăng xuất. Bài viết giới thiệu toàn bộ quá trình phát triển CLI dựa trên Rust, bao gồm định ngh
곽경직
곽경직
곽경직
곽경직
곽경직

13 tháng 3, 2024