ใช้ Jest ใน Angular แบบง่ายกว่าเดิม ด้วย jest-schematic

ในบันทึกก่อนหน้าโน้น เคยจดเอาไว้เรื่องเกี่ยวกับวิธีการใช้ Jest ใน Angular จะเห็นว่ามีขั้นตอนมากมายว่าจะใช้ jest ได้

วันนึงตั้มตูมิตมาบอกว่า ใช้ jest-schmatic ดิ ง่ายกว่าเดิมเยอะ เลยไปลองดูรายละเอียดก็เจอว่า มันง่ายกว่าเดิมมากจริง ๆ

Schematic คืออะไร

schematic เป็น workflow tool ที่จะคอยช่วยเพิ่มโค้ดลงใน project ของเรา หรือแก้ไขโค้ดใน project ของเรา เพื่อแก้ปัญหา dependency หรือเพิ่ม configuaration หรืออื่น ๆ กับ project ของเรา แทนที่เราจะต้องไปทำทุกอย่างด้วยวิธี manual ซึ่งอาจจะทำให้เกิดความผิดพลาดได้ง่าย ก็เปลี่ยนมาใช้ schematic ซึ่งจะทำทุกอย่างให้เราโดยอัตโนมัติ

Jest Schematic

ตามนั้นเลย ตัว jest schematic จะทำหน้าที่แก้ไขไฟล์ รวมถึงเพิ่มไฟล์ ลบไฟล์ต่าง ๆ ที่ไม่ได้ใช้ เพื่อให้สามารถใช้งาน jest ได้

ติดตั้ง jest

วิธีติดตั้ง ง่ายมาก

ng add @briebug/jest-schematic

จบเลย

หรือถ้าอยากจะติดตั้ง jest-schematic ลงใน global

npm install -g @briebug/jest-schematic
ng g @briebug/jest-schematic:add

โดยที่ บรรทัดแรก จะติดตั้ง jest-schematic ลงใน global ก่อน บรรทัดถัดมา จะทำการแก้ไข angular project เพื่อให้สามารถใช้ jest ได้

test

ตอนสั่ง test ก็ใช้ npm run test หรือ yarn test ได้เลย

แล้ว ng test ล่ะ

ใน jest-schematic เวอร์ชั่นนี้ ng test จะยังผูกติดกับ karma อยู่ (default ที่ angular-cli สร้างให้) หากต้องการใช้ผ่าน ng test จะต้องแก้ไขด้วยวิธี manual ตามนี้

Install @angular-builder/jest
npm i -D @angular-builders/jest

หรือผ่าน yarn

yarn add --dev @angular-builders/jest
แก้ไข angular.json

เปิดไฟล์ angular.json ใน block test แก้เป็นแบบนี้

        "test": {
          "builder": "@angular-builders/jest:run",
          "options": {
            "configPath": "../jest.config.js",
            "styles": [
              "src/styles.css"
            ],
            "scripts": [],
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ]
          }
        }

สิ่งที่เปลี่ยนไปใน angular.json คือ เปลี่ยน builder เป็น @angular-builders/jest:run และลบ options ที่ไม่ได้ใช้ออก และใส่ configPath ซึ่งเป็น configuration path ของ jest ให้ถูกต้อง

เท่านี้ก็ใช้ ng test เพื่อรัน jest ได้เลย

หมายเหตุ

jest-schematic ใช้งานได้กับ angular 6 ขึ้นไปเท่านั้น

อ้างอิง

  • https://github.com/briebug/jest-schematic
  • https://codeburst.io/angular-6-ng-test-with-jest-in-3-minutes-b1fe5ed3417c

Leave a Reply

Your email address will not be published. Required fields are marked *