Descreva o erro
Reproduzir
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");
Comportamento esperado
toco corretamente.
Há um problema antigo mencionando o mesmo problema, mas está fechado com um comentário que não é muito útil para mim. https://github.com/sinonjs/sinon/issues/829
No entanto, atribuindo valor antecipadamente à propriedade, o stub funcionará. Mas eu realmente não quero invocar o construtor, pois é muito complicado.
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);
saída: teste
Atualmente trabalhando com a atribuição direta ao objeto 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);
saída: teste
Tomamos a decisão consciente de não permitir o stubbing de propriedades inexistentes, pois isso criaria alguns cenários muito confusos.
O código enviado não se parece com JavaScript para mim, não sei como executá-lo.
Crie um novo problema e preencha o modelo para poupar tempo a todos.