Estoy siguiendo este tutorial de angular.io
Como dijeron, he creado el archivo hero.spec.ts para crear pruebas unitarias:
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);
});
});
Las pruebas unitarias funcionan como un encanto. El problema es: veo algunos errores, que se mencionan en el tutorial:
Nuestro editor y el compilador pueden quejarse de que no saben qué
ityexpectporque carecen de los archivos de mecanografía que describen a Jasmine. Podemos ignorar esas molestas quejas por ahora, ya que son inofensivas.
Y de hecho lo ignoraron. Aunque esos errores son inofensivos, no se ve bien en mi consola de salida cuando recibo muchos de ellos.
Ejemplo de lo que obtengo:
No se puede encontrar el nombre 'describir'.
No se puede encontrar el nombre 'it'.
No se puede encontrar el nombre 'esperar'.
¿Que puedo hacer para arreglarlo?
fuente

Respuestas:
Espero que hayas instalado
Luego coloque la siguiente importación en la parte superior del
hero.spec.tsarchivo:Debería resolver el problema.
fuente
@types/[email protected]. De lo contrario, puede ver estos errores de compilación .import 'jasmine';import {} from 'jasmine';realmente? ¿Es lo mismo queimport 'jasmine'?Con [email protected] o posterior puede instalar tipos con:
Luego importe los tipos automáticamente usando la
typesopción entsconfig.json:Esta solución no requiere
import {} from 'jasmine';en cada archivo de especificaciones.fuente
"types": ["jasmine"]línea. "Por defecto, todos los paquetes visibles" @types "están incluidos en su compilación. Los paquetes en node_modules / @ tipos de cualquier carpeta adjunta se consideran visibles; específicamente, eso significa paquetes dentro de ./node_modules/@types/, ../node_modules/@ tipos /, ../../node_modules/@types/, y así sucesivamente ".nodeyjasminetipos no son detectados. Al menos no funciona para mí y estoy usando [email protected]ang-app/e2e/tsconfig.json. Lo probé en todos los niveles json . ¿Podría agregar más detalles?Como se menciona en algunos comentarios
"types": ["jasmine"], ya no es necesario, todos los@typespaquetes se incluyen automáticamente en la compilación (desde la versión 2.1, creo).En mi opinión, la solución más fácil es excluir los archivos de prueba en su tsconfig.json como:
Esto funciona para mi.
Más información en los documentos oficiales de tsconfig .
fuente
src/tsconfig.app.json,src/tsconfig.spec.jsonytsconfig.json. La mencionada sección "excluir" es parte de la primera."types": [ "jasmine" ]parte de la 2da.excludebloque.excludebloque tsconfig . Luego creé un nuevotsconfig.build.jsonarchivo con el patrón de archivo de especificaciones agregado alexcludebloque. Ahora, en mists-loaderopciones (en el webpack.config) que estoy usandotsconfig.build.json. Con estas configuraciones, los módulos se resuelven en los archivos de prueba y al crear la compilación o iniciar el servidor, se excluyen los archivos de prueba.Necesita instalar tipings para jazmín. Suponiendo que se encuentra en una versión relativamente reciente del mecanografiado 2, debería poder hacer:
fuente
Con [email protected] o posterior puede instalar tipos con npm install
luego importar los tipos automáticamente utilizando el typeRoots opción en tsconfig.json.
Esta solución no requiere importación {} desde 'jazmín'; en cada archivo de especificaciones.
fuente
La solución a este problema está relacionada con lo que @Pace ha escrito en su respuesta. Sin embargo, no explica todo, así que, si no te importa, lo escribiré yo mismo.
SOLUCIÓN:
Agregando esta línea:
al comienzo del
hero.spec.tsarchivo corrige el problema. La ruta conduce a latypingscarpeta (donde se almacenan todos los tipos).Para instalar tipings, debe crear un
typings.jsonarchivo en la raíz de su proyecto con el siguiente contenido:Y ejecutar
typings install(dondetypingsestá el paquete NPM).fuente
En mi caso, la solución fue eliminar el
typeRootsen mitsconfig.json.Como puedes leer en el documento de TypeScript
fuente
Estoy a la última hasta el día de hoy y encontré que la mejor manera de resolver esto es no hacer nada ... no
typeRootsnotypesnoexcludeno,includetodos los valores predeterminados parecen funcionar bien. En realidad, no funcionó bien para mí hasta que los eliminé a todos. Yo tenía:pero eso está en los valores predeterminados, así que eliminé eso.
Yo tenía:
para pasar alguna advertencia del compilador. Pero ahora también lo eliminé.
La advertencia que no debería ser es:
error TS2304: Cannot find name 'AsyncIterable'.desdenode_modules\@types\graphql\subscription\subscribe.d.tslo cual es muy desagradable, así que hice esto en tsconfig para que lo cargue:
ya que está en el conjunto esnext. No lo estoy usando directamente, así que todavía no me preocupa la compatibilidad. Espero que eso no me queme más tarde.
fuente
"types": ["node"]entsconfig.jsonpero se debe añadir en este tipotsconfig.app.json! No debería volver a tener esta advertencia, creo. Podrías quedarte"target": "es5"o"target": "es6"ahora.Solo tenía que hacer lo siguiente para recoger @types en un Lerna Mono-repo donde existen varios node_modules.
Luego, en cada archivo tsconfig.file de cada módulo o aplicación
fuente
Para que el compilador TypeScript use todas las definiciones de tipo visibles durante la compilación, la
typesopción debe eliminarse completamente delcompilerOptionscampo en eltsconfig.jsonarchivo.Este problema surge cuando existen algunas
typesentradas en elcompilerOptionscampo, donde al mismo tiempojestfalta la entrada.Entonces, para solucionar el problema, el
compilerOptionscampo en sutscongfig.jsondebe incluirjesten eltypesárea o deshacerse portypescompleto:fuente
google map typeslatypesopción. Después de eliminar la opción por completo, funcionó bien.Solo agregaré Respuesta para lo que funciona para mí en "mecanografiado": "3.2.4" Me di cuenta de que jazmín en node_modules / @ types hay una carpeta para ts3.1 debajo del tipo de jazmín, así que aquí están los pasos:
npm install -D @types/jasmineAñadir a tsconfig.json jasmine / ts3.1
"typeRoots": [ ... "./node_modules/jasmine/ts3.1" ],Agregar jazmín a los tipos
"types": [ "jasmine", "node" ],Nota: Ya no es necesario para esto
import 'jasmine';.fuente
En mi caso, recibí este error cuando sirvo la aplicación, no cuando la pruebo. No me di cuenta de que tenía una configuración diferente en mi archivo tsconfig.app.json.
Anteriormente tuve esto:
Incluía todos mis
.spec.tsarchivos cuando servía la aplicación. Cambié lainclude property toexclusión 'y agregué una expresión regular para excluir todos los archivos de prueba como este:Ahora funciona como se esperaba.
fuente
Mire la importación, tal vez tenga una dependencia del ciclo , este fue en mi caso el error, el uso
import {} from 'jasmine';solucionará los errores en la consola y hará que el código sea compilable pero no elimine la raíz del diablo (en mi caso, la dependencia del ciclo).fuente
Estoy en Angular 6, Typecript 2.7, y estoy usando Jest Framework para la prueba unitaria. Había
@types/jestinstalado y añadido entypeRootsel interiortsconfig.jsonPero aún tiene el error de visualización a continuación (es decir: en el terminal no hay errores)
Y agregando la importación:
técnicamente no hace nada, así que pensé que hay una importación en algún lugar que causa este problema, entonces descubrí que si eliminaba el archivo
en la
src/carpeta, resolvió el problema para mí. Como @types se importa antes dentro de los rootTypes.Le recomiendo que haga lo mismo y elimine este archivo, no hay configuración necesaria dentro. (ps: si estás en el mismo caso que yo)
fuente
si el error está en el archivo .specs app / app.component.spec.ts (7,3): error TS2304: No se puede encontrar el nombre 'beforeEach'.
agregue esto a la parte superior de su archivo y npm instale rxjs
importar {rango} desde 'rxjs'; importar {mapa, filtro} desde 'rxjs / operadores';
fuente