Sinon: كعب روتين للقراءة فقط يطرح "لا يمكن كعب خاصية غير موجودة"

تم إنشاؤها على ٥ يونيو ٢٠٢٠  ·  3تعليقات  ·  مصدر: sinonjs/sinon

صف الخلل

  • إصدار المكتبة: 9.0.2

لإعادة إنتاج

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

ال 3 كومينتر

ومع ذلك ، عند تعيين القيمة مسبقًا للممتلكات ، سيعمل كعب الروتين. لكنني حقًا لا أريد استدعاء المُنشئ لأنه معقد للغاية.

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 ، ولا أعرف كيفية تشغيله.

يرجى إنشاء عدد جديد وملء النموذج لتوفير بعض الوقت على الجميع.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات