Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.1K
Vistas
Karma: la propiedad no tiene tipo de acceso get

Tengo un error en mis pruebas de Karma en mi aplicación Angular. El error es cuando ejecuto mis pruebas:

Failed: Property activePropertyChanged does not have access type get

Estoy tratando de simular un servicio llamado ModuleSpecService . En este servicio existe el siguiente getter:

 get activePropertyChanged(): Observable<SpecificationPropertyObject> { return this.activePropChangedSubject.asObservable(); }

Y en mi archivo de spec me burlo así:

 spyOnProperty(moduleSpecServiceMock, 'activePropertyChanged', 'get').and.returnValue(of()); // then, in configureTestingModule() I define/mock the service like this: providers: [{ provide: ModuleSpecService, useValue: moduleSpecServiceMock }]

Así que claramente hay un captador en mi servicio del que quiero burlarme. Si elimino la línea con spyOnProperty() arroja el siguiente error:

TypeError: this.moduleSpecService.activePropertyChanged.subscribe is not a function

así que definitivamente necesito el simulacro.

¿Alguna idea de lo que podría salir mal?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Como esto parece ser un error en jasmine, logré solucionarlo con una solución alternativa:

En lugar de esto:

 spyOnProperty(moduleSpecServiceMock, 'activePropertyChanged', 'get').and.returnValue(of());

Definí la propiedad así:

 (moduleSpecServiceMock as any).activePropertyChanged = of();

Tuve que lanzarlo como any , porque si no, me dijo (correctamente) que activePropertyChange es una propiedad read-only (ya que solo tiene un getter).

No es la mejor solución, pero al menos funciona :)

over 4 years ago · Santiago Trujillo Denunciar

0

Puede utilizar la sintaxis de propagación:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax

 const moduleSpecServiceMock = { ...jasmine.createSpyObj('moduleSpecServiceMock ', ['']), activePropertyChanged: of() } as jasmine.SpyObj;

Esto le permite establecer propiedades privadas y captadores sin necesidad de as any sintaxis.

Un gran beneficio de esto es que si refactoriza el nombre del captador, la propiedad de prueba también se actualizará, con as any sintaxis, perderá los tipos y la capacidad de refactorizar.

over 4 years ago · Santiago Trujillo Denunciar

0

Solucioné ese error, creando una propiedad get en el servicio , así que:

Archivo .spec.ts :

 spyOnProperty(moduleSpecServiceMock, 'activePropertyChanged', 'get').and.returnValue(of("Test"));

Archivo .service.ts :

 get activePropertyChanged(): Observable<any> { return of({...element}); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda