Sinon: تحسين المستندات بحثًا عن المنتجات المقلدة

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

هل طلب الميزة الخاص بك متعلق بمشكلة؟
قراءة ما يمكن وما لا يستطيع المزيف فعله ليس واضحًا من الوثائق.

صِف الحل الذي تريده
يجب توثيق الطرق الدقيقة المتاحة لـ Fake.

بادئ ذي بدء ، شكرًا لك على Sinon ، أعتقد أن المكتبة قوية وقد ساعدتني في كتابة الكثير من الاختبارات. ما أطلبه هنا هو أن المنتجات المقلدة بحاجة إلى تحسين وثائقها. هذا مثال لشيء كافحت معه.

تقول الجملة الأولى من التوثيق المزيف:

تم تقديم وهمية مع Sinon مع الإصدار الخامس. إنه يبسط ويدمج المفاهيم من الجواسيس والبذرات.

تم تعريف كلمة "يدمج" هنا بشكل فضفاض للغاية لمعرفة ما ينتهي به المطاف إلى أن تكون واجهة برمجة التطبيقات المزيفة. استنتاجي هو أن المنتجات المقلدة تبدو وكأنها تشترك في واجهة برمجة تطبيقات مع الجواسيس مع بعض السلوك الإضافي المشابه للعذراء. لقد توصلت إلى هذا الاستنتاج لأنه يبدو أن الكائن المزيف له خاصية called كما يفعل الجاسوس (لا يمكن العثور على هذا الموثق في أي مكان باستثناء وثائق الجواسيس) ، و withArgs الذي يتوفر عادة لبذرة ولكن لا يبدو متاحًا للمزيفة.

Documentation Help wanted good first issue hacktoberfest pinned

ال 18 كومينتر

تحتاج المنتجات المقلدة بالتأكيد إلى مستندات أفضل. ربما هناك شيء يجب معالجته في هاكاثون أكتوبر المقترح (ما زال مترددًا ،mroderick؟)؟

@ fatso83 أود أن

هل أقوم بتحديث الملف https://github.com/sinonjs/sinon/blob/master/docs/release-source/release/fakes.md ؟

كما أن نطاق هذه المشكلة هو تحديد الوظائف المتاحة على كائن وهمي ، ربما ربط بالتجسس ووثيقة كعب روتين؟

@ peterjgrainger هذا عظيم! يبدو النطاق وهذا النهج معقولين ...

عند النظر إلى التزييفات البرمجية ، يبدو أن لها نفس واجهة برمجة التطبيقات مثل جاسوس ولا شيء من Stub.

اقتراح تحديث المستندات لإزالة الإشارة إلى بذرة لأنها مضللة قليلاً وإضافة أن واجهة برمجة التطبيقات للتزييف هي نفسها الجاسوس

صرخ 😮 إذا كان هذا لا يبدو صحيحًا.

peterjgrainger شكرا للنظر في هذا. يمكنني رؤية أوجه التشابه بين spy ، و stub eg fakes.throws() هو نفسه stub().throws()

@ mshaaban0 شكرا على المدخلات. سألقي نظرة فاحصة

@ fatso83 @ mshaaban0 أعتقد أنني أسأت فهم النطاق.

اعتقدت أن هذه التذكرة تغطي توثيق الوظيفة المزيفة على سبيل المثال

var fake = sinon.fake();

ليس مباشرة على المزيف نفسه أي

sinon.fake

مما يمكنني رؤيته sinon.fake() إرجاع spy أعتقد أن هذا الجزء من التوثيق يحتاج إلى توضيح حيث أن المراسل يطلب توثيق الكائن بدلاً من الوظائف الثابتة.

لقد توصلت إلى هذا الاستنتاج لأنه يبدو أن الكائن المزيف له خاصية called كما يفعل الجاسوس (لا يمكن العثور على هذا الموثق في أي مكان باستثناء وثائق الجواسيس)

يبدو أن itmayziii يشير إلى sinon.fake() بدلاً من sinon.fake

أعتقد أنني أفهم ماذا أفعل الآن. قم بتعديل الوثائق الحالية لتقول أي الوظائف الثابتة مستوحاة من جاسوس وأيها مستوحاة من كعب وتغيير الصياغة merged لوصف مزيج الأساليب بشكل أفضل بالإضافة إلى محاولة اكتشاف كيفية التمييز بين sinon.fake و sinon.fake()

أنت لست الوحيد الذي يسيء فهم النطاق. سعيد لأنك أوضحتها لنا 😄

تم وضع علامة على هذه المشكلة تلقائيًا على أنها قديمة نظرًا لعدم وجود نشاط حديث لها. سيتم إغلاقه إذا لم يحدث أي نشاط آخر. شكرا لمساهماتكم.

أعتقد أنني أفهم ماذا أفعل الآن. قم بتعديل الوثائق الحالية لتقول أي الوظائف الثابتة مستوحاة من جاسوس وأيها مستوحاة من كعب وتغيير الصياغة المدمجة لوصف مزيج الأساليب بشكل أفضل بالإضافة إلى محاولة اكتشاف كيفية التمييز بين sinon.fake و sinon.fake ( )

ما المطلوب فعله في هذه القضية؟ إذا أوضح شخص ما الأمر ، أود تقديم مساهمة.

نظرًا لوجود قسم يسمى Instance properties ، أعتقد أن هناك حاجة لشرح طرق الوظيفة الزائفة فقط. إذا لم تكن هناك طرق أخرى لوظيفة مزيفة بخلاف أساليب التجسس ، أعتقد أنه لا يوجد سبب لإعادة تشكيل المستندات الحالية.

شكرا 😊

srknzl TBH ، لا أتذكر كل ذلك جيدًا ، لكن هذه بعض النقاط التي قد تحتاج إلى تحسين:

  • تأكد من اكتمال قائمة طرق المصنع الثابتة على sinon.fake
  • قم بتحويل و / أو إضافة بعض أمثلة Runkit القابلة للتشغيل (سهلة للغاية ، ولكنها تستغرق بعض الوقت)
  • قم بتحديث الارتباط في خصائص المثيل للإشارة إلى نفس القسم في Spies.
  • اذكر أن العناصر المدرجة ليست سوى واحدة من العديد من وثائق الجواسيس وأنه يمكنك الرجوع إليها للحصول على القائمة الكاملة
  • وضح الصياغة بحيث يصبح من الواضح أن 1. واجهة برمجة تطبيقات Fakes هي بديل لواجهة برمجة تطبيقات Stubs and Spies التي يمكنها استبدال جميع هذه الاستخدامات بالكامل. 2. يُقصد منه أن يكون أسهل في الاستخدام والصيانة ويحتوي على سطح واجهة برمجة تطبيقات أصغر كثيرًا ويتجنب العديد من الأخطاء من خلال وجود حالات وهمية غير قابلة للتغيير (لا يمكن تغيير السلوك بعد الإنشاء (على عكس Stubs) ، ولكن لديهم حالة داخلية التغييرات عند استخدامها ، مثل callCount وإحصائيات أخرى) 3. مثيل مزيف به واجهة برمجة تطبيقات لجاسوس (_ is a_ Fake a Spy،mroderick؟)

تعد Fakes API بديلاً عن Stubs and Spies API التي يمكنها استبدال جميع هذه الاستخدامات بالكامل

في حين أن هذا صحيح ، أعتقد أن استخدام جاسوس بدلاً من مكالمة استبدال + وهمية أسهل. هل هناك أي شيء يمكن القيام به حيال ذلك؟

const foo = {bar: () => {}};
const aSpy = sinon.spy(foo, 'bar');
foo.bar();

console.log(aSpy.called); // true

ضد

const foo = {bar: () => {}};
const barFake = sinon.fake(foo.bar);
sinon.replace(foo, 'bar', barFake);
foo.bar();

console.log(barFake.called); // true

إذا كان الأمر سهلاً مثل الجواسيس ، فستكون المنتجات المقلدة هي الوحيدة التي سأستخدمها.

يحرر:

اكتشفت أنه يمكنني القيام بذلك:

const foo = {bar: () => {}};
sinon.replace(foo, 'bar', sinon.fake(foo.bar));
foo.bar();
console.log(foo.bar.called); // true

قد يستحق توثيق هذا الاستخدام أيضًا.

srknzl لست متأكدًا مما إذا كانت مكالمة الاستبدال تعيد أي شيء ، ولكن من المحتمل أن تعيد المزيف. هذا سيجعلها أكثر سلاسة.

تم التحقق للتو:

f = sinon.fake();
val=sinon.replace(o, 'b', f)
assert.equal(f,val);

مما يعني أنه يمكنك كتابة هذا:

const foo = {bar: () => {}};
const fake = sinon.replace(foo, 'bar', sinon.fake());
foo.bar();
console.log(fake.calledOnce); // true

نعم ، من المنطقي. كما أن استبدال () لا يذكر قيمة الإرجاع الخاصة به على صفحة آلية تحديد الصلاحيات

فقط وضح الأمر ، ما هي الإصدارات التي يجب تغييرها؟ كل الإصدارات التي لديها مزيفة ، أليس كذلك؟ أو مجرد الإصدار التالي؟

ملاحظات أخرى حول التوثيق بشكل عام:

يمكنني أن أفهم أن الروابط الخضراء عبارة عن روابط ، لكن بعض الروابط غير الخضراء هي أيضًا روابط ، مثل sinon.replace* و sinon.spy و sinon.stub . سيكون من الأفضل جعلها مختلفة بطريقة ما
image

العلاقات العامة الأولية موجودة على https://github.com/sinonjs/sinon/pull/2360 ، والعمل قيد التقدم.

أنا في انتظار ردك.

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