Décrivez le bogue
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
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.