Estoy tratando de probar mi componente angular 4.1.0 -
export class CellComponent implements OnInit {
lines: Observable<Array<ILine>>;
@Input() dep: string;
@Input() embedded: boolean;
@Input() dashboard: boolean;
constructor(
public dataService: CellService,
private route: ActivatedRoute,
private router: Router, private store: Store<AppStore>) {
}
}
Sin embargo, una simple prueba de "debería crear" arroja este error críptico ...
NetworkError: no se pudo ejecutar 'enviar' en 'XMLHttpRequest': no se pudo cargar 'ng: ///DynamicTestModule/module.ngfactory.js'.
así que encontré esta pregunta, que sugiere que el problema es que el componente tiene @Input)_
parámetros que no están configurados, sin embargo, si modifico mi prueba así:
it('should create', inject([CellComponent], (cmp: CellComponent) => {
cmp.dep = '';
cmp.embedded = false;
cmp.dashboard = false;
expect(cmp).toBeTruthy();
}));
entonces sigo teniendo el mismo problema, de manera similar, si elimino las @Input()
anotaciones del componente, todavía no hay diferencia. ¿Cómo puedo hacer que pasen estas pruebas?
angular
unit-testing
karma-jasmine
angular-cli
George Edwards
fuente
fuente
Respuestas:
Este es un problema del nuevo Angular Cli. Ejecute su prueba con
--sourcemaps=false
y recibirá los mensajes de error correctos.Ver detalles aquí: https://github.com/angular/angular-cli/issues/7296
EDITAR:
Taquigrafía para esto es:
ng test -sm=false
A partir de angular 6, el comando es:
ng test --source-map=false
fuente
Tuve el mismo problema al usar angualar cli 6, he usado esta etiqueta para obtener el mensaje de error correcto:
Tal vez ayude a alguien :).
fuente
Para mi caso, había un problema de datos simulados y, en caso de
Array
que volvierastring
del simulacro.Muchas veces sucede cuando se burlan de datos incompletos o incorrectos.
fuente
Puede establecer la propiedad input () en el valor predeterminado en component.ts
O
Modifique su archivo component.spec.ts de la siguiente manera,
fuente
Como se sugirió anteriormente aquí: https://stackoverflow.com/a/45570571/7085047 mi problema estaba en mi
ngOnInit
. Estaba llamando a un proxy de controlador REST generado por swagger simulado. Estaba volviendo nulo, y me estaba suscribiendo a ese nulo, que no funciona ...El error regresó:
Failed to load ng:///DynamicTestModule/MockNodeDashboardComponent_Host.ngfactory.js: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
Solucioné el problema usando ts-mockito: https://github.com/NagRock/ts-mockito
Agregué código para crear una instancia simulada como esta:
Y luego agregó la instancia a la matriz de proveedores de la prueba de esta manera:
fuente
Esto puede estar relacionado con que Chrome oculte un error de prueba real. El área de prueba confundirá a una fábrica falsa de http que no puede cargar y, por lo tanto, ese es el error que informará. Lo más probable es que el error sea alrededor del área ngOnInit donde un objeto, por ejemplo, espera subobjetos y no están definidos.
Para tratar de llegar al final del error, cambie a PhantomJS temporalmente, que parece sufrir menos de estos errores de inicialización y con suerte le informará el error real. En varias ocasiones descubrí que un objeto esperado en la inicialización no estaba completo. ES DECIR:
La corrección del objeto permitió que PhantomJS se completara y también que Chrome pasara a la siguiente prueba.
Aparte de eso, no he visto una solución para eliminar el problema de Chrome. Como siempre, intente adoptar una política de "eliminar el código, hasta que el error desaparezca" para perseguir el error.
ACTUALIZACIÓN: Tenga en cuenta que esta es una respuesta bastante antigua, no recomendaría usar PhantomJS nunca más (EOL). Los informes de prueba del navegador han mejorado mucho y si Chrome te da pena, prueba Firefox, que también funciona muy bien hoy en día.
fuente
También tuve este error, cuya verdad es bastante poco comunicativa.
Estaba relacionado con las llamadas HTTP a través de mis servicios
Yo uso myService.ts con 2 métodos
Me estoy burlando de este servicio: mockMyService.ts
El error estaba aquí porque mi componente estaba usando el método getAll () que olvidé implementar en el mockMyService, así que simplemente agregué el método:
El error se fue :)
fuente
Me enfrenté al mismo problema y descubrí que para solucionarlo, debe configurar sus entradas para el componente en el método antes de cada uno, como se muestra a continuación:
Esto definitivamente resolverá su problema.
fuente
En mi caso, el culpable se
observable.timeout(x).retry(y)
aplicó en algún lugar del Observable devuelto en el nivel de clase de servicio, luego nuevamente en el componente que estaba usando ese servicio.Todo funcionó correctamente en el navegador hasta angular-cli 1.4. Luego comenzó a fallar durante las pruebas de Karma (con un error tan tonto). La solución fue, por supuesto, ordenar estos operadores de tiempo de espera / reintento.
fuente
Para mí, este mensaje aparece cuando un simulacro es falso en mis pruebas: por lo general, proporciona el servicio simulado en el arranque de sus pruebas. Si su simulación es incompleta o falsa, entonces angular devuelve este estúpido error.
Más información sobre mi caso aquí
fuente
Lo que estaría haciendo es:
Agregue console.log () s, línea tras línea en ngOnint () y descubra qué tan lejos llega, luego inspeccione la línea por la que no pasará.
Ex:
Esto estaba fallando en mi prueba con el mismo error en esta publicación. Como se muestra arriba, tenía dos console.logs. El primero pasó por alto, pero el segundo no. Entonces me di cuenta de que el problema está en línea const id = params.get ('id'); y lo arreglé
Espero que esto ayude a alguien.
fuente