صف الخلل
لإعادة إنتاج
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");
سلوك متوقع
كعب بشكل صحيح.
هناك مشكلة قديمة تذكر نفس المشكلة ولكن تم إغلاقها بتعليق لا يفيدني تمامًا. https://github.com/sinonjs/sinon/issues/829
ومع ذلك ، عند تعيين القيمة مسبقًا للممتلكات ، سيعمل كعب الروتين. لكنني حقًا لا أريد استدعاء المُنشئ لأنه معقد للغاية.
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);
الإخراج: اختبار
يعمل حاليًا مع التعيين المباشر لكائن كعب الروتين.
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);
الإخراج: اختبار
لقد اتخذنا قرارًا واعيًا بعدم السماح بإيقاف خصائص غير موجودة ، لأن ذلك من شأنه أن يجعل بعض السيناريوهات مربكة للغاية.
لا يبدو الرمز المقدم لي مثل JavaScript ، ولا أعرف كيفية تشغيله.
يرجى إنشاء عدد جديد وملء النموذج لتوفير بعض الوقت على الجميع.