Angular 2 -yksikkötestit: Nimeä 'describe' ei löydy


Seuraan tätä opasta angular.io:sta

Kuten he sanoivat, olen luonut hero.spec.ts-tiedoston yksikkötestien luomiseksi:

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);
  });
});

Yksikkötestit toimivat loistavasti. Ongelma on: näen joitakin virheitä, jotka on mainittu opetusohjelmassa:

Editori ja kääntäjä voivat valittaa, etteivät he tiedä, mitä it ja expect ovat, koska heiltä puuttuvat tyypitystiedostot, jotka kuvaavat Jasminea. Voimme nyt jättää huomiotta nuo ärsyttävät valitukset, koska ne ovat vaarattomia.

Ja he todellakin jättivät sen huomiotta. Vaikka nuo virheet ovat vaarattomia, se ei näytä hyvältä tulostekonsolissani, kun saan niitä paljon.

Esimerkki siitä, mitä saan:

Nimeä 'describe' ei löydy.

Nimeä 'it' ei löydy.

Nimeä 'expect' ei löydy.

Mitä voin tehdä korjatakseni sen?

Vastaus #1

Toivon, että olet asentanut -

npm install --save-dev @types/jasmine

Lisää sitten seuraava tuonti hero.spec.ts -tiedoston alkuun -

import 'jasmine';

Sen pitäisi ratkaista ongelma.

Vastaus #2

Versiolla [email tai uudemmalla voit asentaa tyyppejä seuraavalla tavalla:

npm install -D @types/jasmine

Tuo sitten tyypit automaattisesti käyttämällä types-vaihtoehtoa tsconfig.json-tiedostossa:

"types": ["jasmine"],

Tämä ratkaisu ei vaadi import {} from 'jasmine'; jokaiseen testitiedostoon.

Vastaus #3

npm install @types/jasmine

Kuten joissakin kommenteissa mainittiin, "types": ["jasmine"] ei enää ole tarpeen, kaikki @types paketit sisällytetään automaattisesti käännökseen (luulen, että versiosta 2.1 lähtien).

Mielestäni helpoin ratkaisu on sulkea testitiedostot pois tsconfig.json-tiedostostasi näin:

"exclude": [
    "node_modules",
    "**/*.spec.ts"
]

Tämä toimii minulle.

Lisätietoja virallisissa tsconfig-dokumenteissa.

Vastaus #4

Sinun täytyy asentaa tyypitykset jasminea varten. Olettakaamme, että käytät suhteellisen uusinta TypeScript 2 -versiota, sinun pitäisi pystyä tekemään näin:

npm install --save-dev @types/jasmine

Vastaus #5

Versiolla [email tai uudemmalla voit asentaa tyypit komennolla npm install

npm install --save-dev @types/jasmine

tuo sitten tyypit automaattisesti käyttämällä typeRoots-vaihtoehtoa tsconfig.json-tiedostossa.

"typeRoots": [
      "node_modules/@types"
    ],

Tämä ratkaisu ei vaadi import {} from 'jasmine'; jokaiseen spec-tiedostoon.

Aiheeseen liittyviä artikkeleita