Jelaskan bugnya
Untuk Mereproduksi
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");
Perilaku yang diharapkan
rintisan dengan benar.
Ada masalah lama yang menyebutkan masalah yang sama tetapi ditutup dengan komentar yang tidak cukup membantu saya. https://github.com/sinonjs/sinon/issues/829
Namun, menetapkan nilai terlebih dahulu ke properti, maka rintisan akan berfungsi. Tapi saya benar-benar tidak ingin memanggil konstruktor karena cukup rumit.
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);
keluaran: tes
Saat ini bekerja dengan menugaskan langsung ke objek rintisan.
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);
keluaran: tes
Kami telah membuat keputusan sadar untuk tidak mengizinkan mematikan properti yang tidak ada, karena itu akan membuat beberapa skenario yang sangat membingungkan.
Kode yang dikirimkan tidak terlihat seperti JavaScript bagi saya, saya tidak tahu cara menjalankannya.
Harap buat masalah baru dan isi template untuk menghemat waktu semua orang.