בדיקות יחידה ב-Angular 2: לא ניתן למצוא את השם 'describe'
אני עוקב אחרי המדריך הזה מ-angular.io
כמו שהם אמרו, יצרתי את הקובץ hero.spec.ts כדי ליצור בדיקות יחידה:
import { Hero } from './hero';
describe('Hero', () => {
it('has name', () => {
let hero: Hero = {id: 1, name: 'Super Cat'};
expect(hero.name).toEqual('Super Cat');
});
it('has id', () => {
let hero: Hero = {id: 1, name: 'Super Cat'};
expect(hero.id).toEqual(1);
});
});
בדיקות יחידה עובדות כקסם. הבעיה היא: אני רואה כמה שגיאות, שהוזכרו במדריך:
העורך שלנו והקומפיילר עשויים להתלונן שהם לא יודעים מהו
itומהוexpectמשום שחסרות להם קבצי ההקלדה שמתארים את Jasmine. אנו יכולים להתעלם מהתלונות המטרידות הללו לעת עתה מאחר שהן חסרות נזק.
והם אכן התעלמו מהם. למרות שהשגיאות האלה חסרות נזק, זה לא נראה טוב בקונסולת הפלט שלי כשאני מקבל הרבה מהן.
דוגמה למה שאני מקבל:
לא ניתן למצוא את השם 'describe'.
לא ניתן למצוא את השם 'it'.
לא ניתן למצוא את השם 'expect'.
מה אני יכול לעשות כדי לתקן את זה?
תשובה #1
אני מקווה שהתקנת -
npm install --save-dev @types/jasmine
לאחר מכן הוסף את הייבוא הבא בראש הקובץ hero.spec.ts -
import 'jasmine';
זה אמור לפתור את הבעיה.
תשובה #2
עם [email או אחר תוכל להתקין סוגים עם:
npm install -D @types/jasmine
לאחר מכן ייבא את הסוגים אוטומטית באמצעות האפשרות types ב-tsconfig.json:
"types": ["jasmine"],
פתרון זה אינו דורש import {} from 'jasmine'; בכל קובץ ספציפי.
תשובה #3
npm install @types/jasmine
כמו שצוין בכמה תגובות, ה-"types": ["jasmine"] כבר לא נדרש, כל חבילות ה-@types נכללות אוטומטית בקומפילציה (מאז גרסה 2.1 כנראה).
לדעתי הפתרון הפשוט ביותר הוא להוציא את קבצי הבדיקה ב-tsconfig.json שלך כך:
"exclude": [
"node_modules",
"**/*.spec.ts"
]
זה עובד בשבילי.
מידע נוסף במסמכי tsconfig הרשמיים.
תשובה #4
אתה צריך להתקין טיפוסים עבור jasmine. בהנחה שאתה בגרסה יחסית עדכנית של TypeScript 2, אתה אמור להיות מסוגל לעשות:
npm install --save-dev @types/jasmine
תשובה #5
עם [email או גרסה מאוחרת יותר אתה יכול להתקין טיפוסים עם npm install
npm install --save-dev @types/jasmine
לאחר מכן ייבא את הסוגים אוטומטית באמצעות האפשרות typeRoots בקובץ tsconfig.json.
"typeRoots": [
"node_modules/@types"
],
פתרון זה אינו דורש ייבוא {} מ-'jasmine' בכל קובץ ספציפיקציה.
