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

제이의 블로그

การจำลอง Prisma Client สำหรับการทดสอบหน่วยใน NestJS

เลือกภาษา

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

สรุปโดย AI ของ durumis

  • การลบการพึ่งพาภายนอกเป็นสิ่งสำคัญสำหรับการทดสอบหน่วย
  • คุณสามารถจำลอง Prisma Client ของ Prisma ORM ได้อย่างง่ายดายโดยใช้แพ็คเกจ jest-mock-extended
  • การเขียนการทดสอบหน่วยสะดวกขึ้นหลังจากการจำลอง

โดยหลักการแล้ว การทดสอบหน่วยของแอปพลิเคชันควรดำเนินการในสภาพแวดล้อมที่แยกต่างหาก ดังนั้นจึงควรลบการพึ่งพาภายนอก เช่น 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
การสร้างแบบจำลองข้อมูลเชิงกายภาพ การสร้างแบบจำลองข้อมูลเชิงกายภาพคือกระบวนการออกแบบตารางฐานข้อมูลเชิงสัมพันธ์เพื่อให้สามารถใช้งานได้จริง โดยมีเป้าหมายเพื่อเพิ่มประสิทธิภาพ โดยการพิจารณาประสิทธิภาพในการใช้พื้นที่จัดเก็บ การแบ่งพาร์ติชันข้อมูล การออกแบบดัชนี เป็นต้น สามารถแก้ไขปัญหาประสิทธ

9 เมษายน 2567

แบบจำลองข้อมูลเชิงแนวคิดของโครงการ Kanban Board 1 โครงการ Kanban Board ซึ่งเป็นส่วนหนึ่งของงานฝึกงานด้าน Backend ของ Wanted ได้รับการนำไปใช้ใหม่เพื่อวัตถุประสงค์ในการฝึกฝนการสร้างแบบจำลองข้อมูลเชิงสัมพันธ์ การสร้างแบบจำลองข้อมูลเชิงแนวคิดได้ดำเนินการผ่านกระบวนการแยก Entity, กำหนดตัวระบุ และระบุความสัมพัน

9 เมษายน 2567

การสร้างแบบจำลองข้อมูลเชิงสัมพันธ์ การสร้างแบบจำลองข้อมูลเชิงสัมพันธ์ คือ กระบวนการแบ่งข้อมูลจากโลกแห่งความเป็นจริงออกเป็นตารางและข้อมูล โดยมีขั้นตอนคือ การวิเคราะห์ความต้องการ การสร้างแบบจำลองข้อมูลเชิงแนวคิด การสร้างแบบจำลองข้อมูลเชิงตรรกะ และการสร้างแบบจำลองข้อมูลเชิงกายภาพ โดยใช้แผนภาพ

8 เมษายน 2567

การพัฒนาแอปแบบคนเดียว ควรทำการทดสอบอะไรบ้าง? เรียนรู้วิธีจัดลำดับความสำคัญของการทดสอบและวางแผนกลยุทธ์การทดสอบที่มีประสิทธิภาพในระหว่างการพัฒนาแอป ผู้เขียนแนะนำให้จัดลำดับความสำคัญของการทดสอบ โดยเริ่มจาก การทดสอบโดยบุคคล, การทดสอบแบบบูรณาการ, การทดสอบหน่วย, การทดสอบการยอมรับ/การทดสอบวิดเจ็ตตามลำดับ เ
Alien Story
Alien Story
Alien Story
Alien Story
Alien Story

16 พฤษภาคม 2567

วิธีที่ Rust ป้องกันบั๊กแบบพร้อมกัน Rust เป็นภาษาที่ทรงพลังในการแก้ปัญหาความท้าทายของการเขียนโปรแกรมแบบพร้อมกัน ระบบประเภทและแบบจำลองการเป็นเจ้าของทำให้การส่งผ่านและการแชร์ข้อมูลระหว่างเธรดปลอดภัย Mutex, Channel, Atomic และรูปแบบความแปรปรวนภายในอื่น ๆ ช่วยให้คุณกำหนดและใช้ตัวแปรที่แชร์ได้อย
곽경직
곽경직
곽경직
곽경직
곽경직

28 มีนาคม 2567

คู่มือการเริ่มต้นกับ Rust คู่มือสำหรับผู้เริ่มต้นใช้ Rust: ตั้งแต่การติดตั้งตัวแปลภาษาไปจนถึงความเข้าใจแนวคิดเบื้องต้น เรียนรู้วิธีการใช้เทคโนโลยีและไลบรารีล่าสุด ผ่านเอกสารประกอบและบทเรียนอย่างละเอียด นำเสนอหัวข้อหลัก เช่น ตัวแปร ฟังก์ชัน โครงสร้างข้อมูล และแนะนำโครงสร้างโปรเจกต
곽경직
곽경직
곽경직
곽경직
곽경직

30 มีนาคม 2567

[ไม่มีพื้นฐานทางวิศวกรรมคอมพิวเตอร์ การอยู่รอดในฐานะนักพัฒนา] 14. สรุปเนื้อหาการสัมภาษณ์ทางเทคนิคที่นักพัฒนาหน้าใหม่ถามบ่อย คู่มือเตรียมตัวสัมภาษณ์งานเทคนิคสำหรับนักพัฒนาหน้าใหม่ บทความนี้จะอธิบายแนวคิดที่มักปรากฏใน การสัมภาษณ์งาน เช่น พื้นที่หน่วยความจำหลัก โครงสร้างข้อมูล RDBMS และ NoSQL การเขียนโปรแกรมเชิงโครงสร้างและเชิงวัตถุ การโอเวอร์ไรด์และการโอเวอร์โหลด อัลกอริทึมการเป
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

3 เมษายน 2567

[นอกสายงาน วิศวกร สู้ชีวิต] 17. พอร์ตโฟลิโอของวิศวกรมือใหม่ ไปถึงไหน? พอร์ตโฟลิโอของวิศวกรมือใหม่ควรเน้นไปที่ทักษะการพัฒนา ซอฟต์แวร์ การติดตั้ง Infra ทั้งหมดนั้นไม่จำเป็นเท่ากับการสร้างฟังก์ชัน CRUD พื้นฐาน และการสะสมประสบการณ์การเชื่อมต่อ API ภายนอก สามารถลองใช้ API เช่น การเข้าสู่ระบบของ Naver, API แผนที่ Naver, API ของ
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

3 เมษายน 2567

แนวคิดการปรับปรุงโปรแกรมซื้อขายอัตโนมัติ บทความนี้เสนอแนวคิดการปรับปรุงฟังก์ชันของโปรแกรมการซื้อขายแบบกริดอัตโนมัติ โดยมีการแนะนำการจัดการเหตุการณ์สำคัญ การจัดการตรรกะการลงทุน และการเพิ่มฟังก์ชัน Short Position เป็นต้น โดยเฉพาะฟังก์ชันการถือครองจะช่วยให้ผู้ใช้สามารถซื้อในช่วงเวลาที่เหมาะสมในช่วง
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

21 เมษายน 2567