web-dev-qa-db-fra.com

ERREUR: <SPYONPROPERTY>: La fonction n'est pas déclarée configurable

J'avais des tests de jasmin avec webpack 3. J'essaie maintenant de l'utiliser avec WebPack 4 mais j'ai un problème avec cela.

Tout d'abord, j'ai eu un problème avec Spyon Fonction.

Erreur :: MyFunction n'est pas déclarée écritable ou n'a pas de setter

J'ai trouvé des articles sur une solution de contournement pour ce problème: Spy-on-getter-et-Setter

J'ai changé Spyon to SpyonProperty Mais sans chance. Maintenant j'ai un problème avec

> Erreur :: MyFunction n'est pas déclarée configurable

Mon code est écrit en JS et ressemble à ceci:

import * as FocusServiceSpy from '../focus/FocusService';

describe('#onLinkClick', function() {
            it('should call myFunction', () => {
                spyOnProperty(FocusServiceSpy, 'myFunction', 'get');
                expect(FocusServiceSpy.myFunction).toHaveBeenCalled();
            });

        }

Savez-vous ce qui pourrait être un problème avec cela?

Mise à jour 1:

Je devrais être plus descriptif. Je voudrais créer un espion sur la fonction du Focusservice. Ce service n'a qu'une seule méthode appelée myfunction. La seule chose que je veux réaliser est de faire en sorte que cette méthode soit appelée.

Maintenant, je l'ai changé à STH comme ça et j'ai une erreur:

> TypeError: L'objet n'est pas un constructeur (évaluant 'Nouveaux focusService ()') (ligne 180)

describe('#onLinkClick', function() {
        const FocusService = require('../focus/FocusService');

        it('should call myFunction', () => {
            const service = new FocusService();
            spyOnProperty(service, 'myFunction').and.callThrough();
            ... (do some action)
            expect(service.myFunction).toHaveBeenCalled();
        });

    }

FocusService ressemble à ceci:

export function myFunction(arg) {
    ... (do some action)
}
4
konrado

J'ai vécu le même problème lorsque j'ai essayé de mettre à niveau le projet de Angular 8 à 9, il n'y a pas de réponse que je pourrais trouver sur Google, mais j'ai compris une façon de le résoudre dans mon projet.

Dans tsconfig.json, changer target à es5.

Exemple:

{
  "compilerOptions": {
    ...
    "target": "es5",
    ...
  }
}

C'est ça! J'espère que cela pourrait aider quelqu'un essaie de trouver la solution.

1
Thanh Nguyen