Sinon: propriété stub readonly throw "Impossible de stub propriété inexistante"

Créé le 5 juin 2020  ·  3Commentaires  ·  Source: sinonjs/sinon

Décrivez le bogue

  • Version de la bibliothèque : 9.0.2

Reproduire

import * as sinon from "sinon";
class B {
    public readonly a: string;
    public get(): void {}
}

const bStub = sinon.createStubInstance(B);
sinon.stub(bStub , "a").value("test");

// let b = new B();
// sinon.stub(b, "a").value("test");

Comportement prévisible
tamponner correctement.

Il y a un ancien numéro mentionnant le même problème mais il est fermé par un commentaire qui ne m'est pas très utile. https://github.com/sinonjs/sinon/issues/829

Tous les 3 commentaires

Cependant, en attribuant au préalable une valeur à la propriété, le stub fonctionnera. Mais je ne veux vraiment pas invoquer le constructeur car c'est assez compliqué.

import * as sinon from "sinon";

class B {
    public readonly a: string;
    public get(): void {}
    constructor(aa: string) {
        this.a = aa;
    }
}

// const bStub = sinon.createStubInstance(B);
let b = new B("t");
sinon.stub(b, "a").value("test");
console.log(b.a);

sortie : test

Travaille actuellement avec l'attribution directe à l'objet stub.

import * as sinon from "sinon";

class B {
    public readonly a: string;
    public get(): void {}
    constructor(aa: string) {
        this.a = aa;
    }
}

const bStub = sinon.createStubInstance(B);
(bStub as any).a = "test";
console.log(b.a);

sortie : test

Nous avons délibérément pris la décision de ne pas autoriser le remplacement de propriétés inexistantes, car cela créerait des scénarios très déroutants.

Le code soumis ne ressemble pas à du JavaScript pour moi, je ne sais pas comment l'exécuter.

Veuillez créer un nouveau problème et remplir le modèle pour faire gagner du temps à tout le monde.

Cette page vous a été utile?
0 / 5 - 0 notes