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

这是AI翻译的帖子。

제이의 블로그

在 NestJS 中使用 Prisma Client 模擬單元測試

  • 写作语言: 韓国語
  • 基准国家: 所有国家 country-flag

选择语言

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

durumis AI 总结的文章

  • 移除外部依賴關係對於單元測試至關重要。
  • 可以使用 jest-mock-extended 套件輕鬆地模擬 Prisma ORM 的 Prisma Client。
  • 模擬後,單元測試編寫更加便利。

應用程式單元測試的原則是進行隔離測試,因此最好移除可能會影響測試結果的網路 I/O、資料庫等外部依賴。

這次我在玩具專案中使用了 Prisma ORM,為了進行單元測試,我寫了這篇文章來記錄如何簡單地模擬 Prisma Client。


安裝 jest-mock-extended 套件

Prisma 官方文件也推薦使用此套件,使用上述命令進行安裝。


模擬 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);


 單元測試範例程式碼

  describe('create', () => {
    it('成功建立使用者後,應返回使用者資訊。', 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',
          });
    });

模擬後,也支援類型,因此撰寫單元測試變得非常方便。

Jay
제이의 블로그
1인분이 목표인 초보 개발자
Jay
看板板項目1 概念性數據模型 將WANTED 後端實習的看板板項目,作為關係型數據模型練習目的,重新實作並進行概念性數據模型。 經過實體分離、識別碼定義、關係識別等過程,比之前更順利地完成了模型。

2024年4月9日

邏輯數據模型 邏輯數據模型是將概念數據模型轉換為關係數據庫範式的過程,根據映射規則,將 1:1、1:N、N:M 關係 轉換為關係數據庫中的表格,並通過正規化來確保數據完整性。通過 1NF、2NF、3NF 的正規化過程,對表格進行 優化,消除部分依賴和傳遞依賴。

2024年4月9日

看板項目專案 2 邏輯數據模型 基於概念性數據模型 ERD,逐步說明進行邏輯數據模型的方法,並提出正規化過程中遇到的困難和解決 方案。特別是針對 Ticket 表格中的 author_id 和 responsibility_id 是否需要分開,以及解決 過程進行了詳細說明。

2024年4月9日

單人開發應用程式需要進行哪些測試? 本文將探討如何為應用程式開發設定測試優先順序並制定有效的測試策略。作者建議將人機測試、整合測試、單元測試和驗收/小工具測試依序排列優先順序,並強調時間效率。本文將介紹適合單人開發環境的實用測試策略。
Alien Story
Alien Story
Alien Story
Alien Story
Alien Story

2024年5月16日

文章測試 두루미스 AI 沒有預覽。
안민수
안민수
안민수
안민수

2024年4月29日

[有效 Java] 項目 3. 使用私有建構函式或枚舉類型來保證單例 本文章介紹了在 Java 中實現單例模式的三種方法(公用靜態成員、靜態工廠方法、枚舉類型),並說明了每種方法的優缺點以及序列化時的注意事項。考慮到反射攻擊的安全性以及程式碼簡潔性,文章建議使用枚舉類型作為最合適的方法。(資料來源:有效 Java, https://catsbi.oopy.io/d7f3a636-b613-453b-91c7-655d71fda2b1)
제이온
제이온
제이온
제이온

2024年4月27日

[Next.js] 运行时环境注入 了解在 Next.js 中设置构建后环境变量的方法。本文将介绍如何在 Windows 上轻松安装 cross-env 以及修改脚本的方法。它可以有效地用于各种环境变量设置,例如 local、dev、qa、prod 等。
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit

2024年3月20日

[物件] 第 2 章. 面向物件程式設計 這是一份文件,它解釋了使用物件導向程式設計方法來實現電影訂票系統的方法。它涵蓋了合作、物件、類別、繼承、多型、抽象化和組合等概念。它通過封裝、介面和實現隱藏來確保物件的自律性,並提供提高程式碼重用性和靈活性的方法。
제이온
제이온
제이온
제이온

2024年4月28日

Rust 入门指南 Rust 新手指南: 从编译器安装到基本概念理解。通过官方文档和教程学习如何使用最新技术和库。 循序渐进地解释变量、函数、结构体等核心主题,并介绍项目结构、依赖管理、测试编写等。还可以了解 Rust 的各种应用领域和语言历史。
곽경직
곽경직
곽경직
곽경직
곽경직

2024年3月30日