typescript - "jasmine ไม่ได้ถูกกำหนด"
ฉันเพิ่งอัปเดตเวอร์ชันของ Jest จาก 24.x เป็น 27.0.0 และสิ่งนี้ทำให้การทดสอบหนึ่งในของฉันเสีย:
ฉันได้ตั้งกรอบการทดสอบของฉันไว้ดังนี้:
describe('PersonDescriber', () => {
let service: PersonDescriber;
const mock = {
getAutocompleteResults: jasmine.createSpy().and.returnValue({features: [{relevance: 1, meta: {}},{relevance: 0}]}),
};
}
ทันทีที่ฉันอัปเดตเวอร์ชัน ตอนนี้มันเกิดข้อผิดพลาดสำหรับ jasmine โดยบอกว่า:
ReferenceError: jasmine is not definedมีใครพอทราบไหมว่าเกิดอะไรขึ้น? ฉันต้องนำเข้า jasmine ด้วยตนเองเหรอ? ตอนที่ฉันใช้เวอร์ชันเก่าของ Jest ฉันไม่ได้มีการนำเข้า jasmine ในไฟล์นี้
ล้อเล่น :
"jest": {
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"rootDir": "src",
"testRegex": ".spec.ts$",
"transform": {
"^.+\\.(t|j)s$": "ts-jest"
},
"collectCoverage": true,
"coverageDirectory": "../coverage",
"collectCoverageFrom": [
"**/*.ts",
"!**/*.dto.ts",
"!**/*.model.ts",
"!**/*.module.ts",
"!**/main.ts",
"!**/configuration.ts"
],
"moduleNameMapper": {
"@config/(.*)": "<rootDir>/config/$1",
"@personDescriber/(.*)": "<rootDir>/personDescriber/$1",
"@health/(.*)": "<rootDir>/health/$1",
"@shared/(.*)": "<rootDir>/shared/$1"
},
"coverageThreshold": {
"global": {
"branches": 20,
"functions": 20,
"lines": 20,
"statements": 20
}
},
"testEnvironment": "node"
},
คำตอบ #1
ตัวรันทดสอบเริ่มต้นถูกเปลี่ยนจาก jasmine2 ในเวอร์ชัน 24.x เป็น jest-circus/runner ในเวอร์ชัน 27.x คุณสามารถตั้งค่าตัวรันกลับไปที่ jasmine2 ด้วยตนเอง หรือเขียนการทดสอบของคุณใหม่เป็นสไตล์ jest-circus คีย์การกำหนดค่าคือ testRunner คุณสามารถหาข้อมูลเพิ่มเติมได้ใน
เอกสาร Jest 24.x
เอกสาร Jest 27.x
jest-circus
คำตอบ #2
ตรวจสอบการนำเข้าของคุณ คุณอาจพลาด '/jest' ฉันเคยมีปัญหาแบบเดียวกันเพราะฉันได้นำเข้าพวกองค์ประกอบเหล่านั้นจาก '@ngneat/spectator' แทนที่จะเป็น '@ngneat/spectator/jest'
การนำเข้าที่ถูกต้อง:
import {
createComponentFactory,
mockProvider,
Spectator,
SpectatorFactory,
} from '@ngneat/spectator/jest';
