Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.1K
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda