Ginkgo هو إطار اختبار ناضج لـ GO مصمم لمساعدتك في كتابة المواصفات التعبيرية. يبني Ginkgo أعلى مؤسسة testing
GO ويكمله مكتبة Matcher Gomega. معا ، يتيح لك Ginkgo و Gomega التعبير عن النية وراء المواصفات الخاصة بك بوضوح:
يستورد ( . "github.com/onsi/ginkgo/v2". "github.com/onsi/gomega"...)var _ = وصف (" فحص الكتب من المكتبة "، التسمية (" المكتبة ") ، func () {var library *libraries.libraryvar book *books.bookvar valjean *user.userbeforeach (func () {library = libraries.newclient () book = & books.book {title: "les miserables" ، المؤلف: "فيكتور هوغو" ، } valjean = user.newuser ("Jean Valjean") }) عندما ("المكتبة تحتوي على الكتاب المعني" ، func () {eSteach (func (ctx speccontext) {توقع (library.store (ctx ، book)). }) السياق ("والكتاب متاح" ، func () {it ("" يضفيه على القارئ "، func (ctx speccontext) {توقع (valjean.checkout (ctx ، library ،" les miserables "). إلى. (نجح ()) توقع (valjean.books ()). إلى (احتواء (كتاب)) توقع (library.userwithbook (CTX ، كتاب)). } ، spectimeout (time.second * 5)) }) السياق ("ولكن تم بالفعل فحص الكتاب" ، func () {var javert *user.userbeforeach (func (ctx speccontext) {javert = user.newuser ("javert") توقع (javert.checkout (ctx ، مكتبة ، "Les Miserables"). إلى (النجاح ()) }) it ("يخبر المستخدم" ، FUNC (CTX speccontext) {err: = valjean.checkout (ctx ، library ، "les miserables") توقع (err). to (matcherror ( ) } ، spectimeout (time.second * 5)) it ("يتيح للمستخدم وضع تعليق ويتم إخطاره لاحقًا" ، func (ctx speccontext) {توقع (valjean.hold (ctx ، library ، "les miserables"). إلى. (Sutervious ()) توقع (Valjean.holds (CTX)). إلى (احتواء (كتاب)) بواسطة ("عندما يعيد Javert إلى الكتاب") توقع (javert.return (CTX ، Library ، Book)). )) بواسطة ("في نهاية المطاف إبلاغ Valjean"): = "Les Miserables جاهز لالتقاط" في نهاية المطاف (CTX ، Valjean.Notifications). يجب أن يكون (احتواء (إخطار)) (Valjean.checkout (CTX ، المكتبة "، المكتبة ،" Les Miserables ") } ، spectimeout (time.second * 10)) }) }) عندما ("لا تحتوي المكتبة على الكتاب المعني" ، func () {it ("يخبر القارئ بأن الكتاب غير متوفر" ، func (ctx speccontext) {err: = valjean.checkout (ctx ، library ، " Les Miserables ") توقع (ERR). إلى (Matcherror (" Les Miserables ليس في كتالوج المكتبة "))))) } ، spectimeout (time.second * 5)) }) })
القفز إلى المستندات لمعرفة المزيد. من السهل bootstrap والبدء في كتابة المواصفات الأولى.
إذا كان لديك سؤال أو تعليق أو تقرير الأخطاء أو طلب الميزات وما إلى ذلك ، فيرجى فتح مشكلة GitHub ، أو زيارة قناة Ginkgo Slack.
سواء أكانت كتابة مواصفات الوحدة الأساسية أو مواصفات التكامل المعقدة أو حتى مواصفات الأداء - تمنحك Ginkgo لغة معبرة خاصة بالمجال (DSL) والتي ستكون مألوفة للمستخدمين القادمين من الأطر مثل RSPEC و RSPEC و Jasmine و Busted. يشار أحيانًا إلى هذا النمط من الاختبار باسم "التطوير القائم على السلوك" (BDD) على الرغم من أن فائدة Ginkgo تتجاوز اختبار مستوى القبول.
مع DSL من Ginkgo ، يمكنك استخدام Nestable Describe
و Context
When
عقد الحاويات لمساعدتك في تنظيم المواصفات الخاصة بك. BeforeEach
AfterEach
العقد الإعداد للإعداد والتنظيف. It
Specify
العقد الموضوعية التي تحمل تأكيداتك. BeforeSuite
و AfterSuite
العقد لإعداد وتنظيف بعد جناح ... وأكثر من ذلك بكثير!.
في وقت التشغيل ، يمكن لـ Ginkgo تشغيل المواصفات الخاصة بك بترتيب عشوائي مستنسخة ولديه دعم متطور لمواصلة المواصفات. في الواقع ، فإن تشغيل المواصفات بالتوازي أمر سهل مثل
Ginkgo -P
باتباع الأنماط المعمول بها لكتابة المواصفات المتوازية ، يمكنك بناء أجنحة تكامل كبيرة ومعقدة تتوافق بشكل نظيف وتشغيلها بشكل مؤدي. ولا داعي للقلق بشأن معلق جناح المواصفات الخاص بك أو تركه في الفوضى - يوفر Ginkgo context.Context
لكل عقدة.
مع نمو الأجنحة الخاصة بك ، تساعدك Ginkgo على الحفاظ على مواصفاتك منظمة مع الملصقات وتتيح لك تشغيل مجموعات فرعية من المواصفات بسهولة ، إما برمجيًا أو على سطر الأوامر. وتولد البنية التحتية لإبلاغ Ginkgo إخراجًا قابل للقراءة في الآلة في مجموعة متنوعة من التنسيقات ويسمح لك ببناء البنية التحتية المخصصة الخاصة بك.
يشحن Ginkgo مع ginkgo
، وهي أداة سطر أوامر مع دعم لتوليد الأجنحة Ginkgo وتشغيلها وتصفيةها وتوصيفها. يمكنك حتى تشغيل Ginkgo تلقائيًا المواصفات الخاصة بك عند اكتشاف تغيير مع ginkgo watch
، مما يتيح حلقات التغذية المرتدة السريعة أثناء التطوير الذي يحركه الاختبار.
وهذا مجرد Ginkgo! يجلب Gomega عائلة من التأكيدات والمطابقات الأثرياء ، الناضجة ، إلى أجنحةك. مع Gomega ، يمكنك بسهولة مزج التأكيدات المتزامنة وغير المتزامنة في المواصفات الخاصة بك. يمكنك حتى إنشاء مجموعة من المطاعم الخاصة بمجال التعبيرية بسرعة وسهولة عن طريق تكوين لبنات البناء الحالية في Gomega.
اختبار سعيد!
Ginkgo هو مرخص له معهد ماساتشوستس للتكنولوجيا
انظر المساهمة