javascript - Usando Typescript + módulos ngMock
Estoy tratando de entender Typescript, AngularJS y la parte de ngMock. He visto código para inyectar un módulo al inicio de una prueba unitaria de esta manera.
beforeEach(angular.mock.module("myApp"));
Necesito proporcionar otro servicio para que esto funcione:
beforeEach(module("myApp", function($provide) {
$provide.value("myService", {
...
});
}));
Pero si lo hiciera
beforeEach(angular.mock.module("myApp", function($provide) {
$provide.value("myService", {
...
});
}));
El compilador de Typescript se queja de que angular.mock.module solo acepta un argumento. Entonces, en el primer fragmento de código de arriba, ¿qué módulo está usando? Cuando voy a la definición, dice en el angular-mocks.d.ts:
declare var module: (...modules: any[]) => any;
¿Entonces qué está pasando aquí? No estoy seguro de si entiendo la notación en el archivo de definición para saber si angular.mock.module y module se usan de la misma manera. ¿Alguien puede explicármelo?
Respuesta #1
No estoy seguro de si entiendo la notación en el archivo de definición para comprender si angular.mock.module y module se usan de la misma manera. ¿Alguien puede explicármelo?
Hay un error en la definición. Los siguientes dos deberían ser iguales: https://github.com/borisyankov/DefinitelyTyped/blob/master/angularjs/angular-mocks.d.ts
// global module
declare var module: (...modules: any[]) => any;
// from angular.mock.module
module(...modules: string[]): any;
module(...modules: Function[]): any;
module(modules: Object): any;
Si obtienes el archivo de definición más reciente, se ha solucionado: https://github.com/borisyankov/DefinitelyTyped/pull/2564
Hay un lado negativo: En muchos casos las definiciones son incluso mejores que la documentación de la biblioteca de JavaScript.
