"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > مقدمة إلى GoMock: السخرية في Go

مقدمة إلى GoMock: السخرية في Go

تم النشر بتاريخ 2024-09-02
تصفح:898

An Introduction to GoMock: Mocking in Go
في تطوير البرمجيات، يعد الاختبار جانبًا مهمًا يضمن جودة وموثوقية التعليمات البرمجية الخاصة بك. ومع ذلك، عند كتابة الاختبارات، غالبًا ما تواجه مواقف تحتاج فيها إلى اختبار أحد المكونات بشكل منفصل، بعيدًا عن تأثير تبعياته. وهنا يأتي دور السخرية، وبالنسبة لمطوري Go، يعد GoMock واحدًا من أكثر الإطارات استخدامًا لهذا الغرض.
في هذه المقالة، سنستكشف GoMock، وهو إطار عمل محاكاة قوي لـ Go (Golang)، ونوضح كيفية استخدامه بفعالية في استراتيجية الاختبار الخاصة بك.

ما هو جوموك؟
GoMock هو إطار عمل ساخر لـ Go يسمح للمطورين بإنشاء كائنات وهمية لاختباراتهم. هذه الكائنات الوهمية هي إصدارات محاكاة لكائنات حقيقية، مما يتيح لك اختبار التعليمات البرمجية الخاصة بك بمعزل عن طريق استبدال التبعيات بتطبيقات وهمية. وهذا مفيد بشكل خاص لاختبار التفاعلات المعقدة بين المكونات دون الاعتماد على أنظمة أو تبعيات خارجية فعلية.

لماذا نستخدم GoMock؟
السخرية ضرورية لعدة أسباب:

  1. العزل: من خلال السخرية من التبعيات، يمكنك التركيز على اختبار وظيفة مكون معين دون أن تتأثر بسلوك تبعياته.
  2. السرعة: عادةً ما يتم تشغيل الاختبارات الساخرة بشكل أسرع لأنها لا تتضمن اتصالات فعلية بقاعدة البيانات أو مكالمات الشبكة أو غيرها من العمليات التي تستغرق وقتًا طويلاً.
  3. التحكم: مع المحاكاة، لديك سيطرة كاملة على سلوك التبعيات، مما يسمح لك بمحاكاة سيناريوهات مختلفة، بما في ذلك حالات الحافة.
  4. التكرار: تساعد النماذج على ضمان تكرار الاختبارات وتحقيق نتائج متسقة، حتى عندما تتغير الظروف الخارجية. يوفر GoMock حلاً قويًا لتنفيذ النماذج في Go، مما يسهل اختبار التعليمات البرمجية الخاصة بك بشكل فعال.

البدء مع GoMock

  1. تثبيت GoMock للبدء في استخدام GoMock، تحتاج إلى تثبيت حزمة GoMock وأداة mockgen، التي تنشئ تطبيقات وهمية لواجهاتك. يمكنك القيام بذلك باستخدام وحدات Go: اذهب واحصل على github.com/golang/mock/gomock اذهب لتثبيت github.com/golang/mock/mockgen@latest
  2. إنشاء نماذج وهمية باستخدام الموكجين يتم استخدام أداة mockgen لإنشاء تطبيقات وهمية للواجهات. لنفترض أن لديك قاعدة بيانات واجهة في حزمة db تريد الاستهزاء بها. يمكنك إنشاء وهمية مثل هذا: mockgen -source=db.go -destination=mocks/mock_db.go -package=mocks ينشئ هذا الأمر تطبيقًا وهميًا لواجهة قاعدة البيانات في الحزمة الصورية، والتي يمكنك استخدامها في اختباراتك.
  3. اختبارات الكتابة باستخدام GoMock بمجرد إنشاء النماذج الخاصة بك، يمكنك استخدامها في حالات الاختبار الخاصة بك. هنا مثال: الحزمة الخاصة بي

يستورد (
"الاختبار"
"github.com/golang/mock/gomock"
"mypackage/mocks" // استيراد الحزمة التي تحتوي على النماذج التي تم إنشاؤها
)

func TestMyFunction(t *testing.T) {
// إنشاء وحدة تحكم Gomock جديدة
ctrl := gomock.NewController(t)
تأجيل ctrl.Finish()

// Create a mock instance of the Database interface
mockDB := mocks.NewMockDatabase(ctrl)

// Set up expectations on the mock
mockDB.EXPECT().GetData("key").Return("value", nil)

// Call the function under test, using the mock as a dependency
result, err := MyFunction(mockDB, "key")

// Assert the results
if err != nil {
    t.Fatalf("expected no error, got %v", err)
}
if result != "value" {
    t.Fatalf("expected 'value', got %v", result)
}

}
في هذا المثال، MyFunction هي الوظيفة التي يتم اختبارها، وتعتمد على واجهة قاعدة البيانات. يتم استخدام الكائن الوهمي mockDB لمحاكاة سلوك قاعدة البيانات الحقيقية أثناء الاختبار، مما يضمن أن الاختبار يركز فقط على المنطق داخل MyFunction.

  1. تحديد التوقعات باستخدام GoMock إحدى الميزات الرئيسية لـ GoMock هي القدرة على تحديد التوقعات بشأن استدعاءات الطريقة. يمكنك تحديد عدد المرات التي يجب فيها استدعاء الأسلوب، وبأي وسائط، وما الذي يجب أن يُرجعه. يساعد هذا في ضمان تفاعل التعليمات البرمجية الخاصة بك مع التبعيات كما هو متوقع. على سبيل المثال: mockDB.EXPECT().GetData("key").Times(1).Return("value"، nil) يحدد هذا التوقع أنه يجب استدعاء أسلوب GetData مرة واحدة تمامًا باستخدام الوسيطة "key" ويجب أن يُرجع "قيمة" وnil كخطأ.

أفضل الممارسات لاستخدام GoMock
لتحقيق أقصى استفادة من GoMock، ضع في اعتبارك أفضل الممارسات التالية:

  1. حافظ على تركيز الاختبارات: استخدم GoMock لعزل المكون قيد الاختبار والتركيز على منطقه، بدلاً من اختبار سلوك تبعياته.
  2. تجنب المبالغة في الاستهزاء: على الرغم من أن الاستهزاء أمر قوي، إلا أنه تجنب إغراء الاستهزاء بالكثير من التبعيات، لأنه قد يؤدي إلى اختبارات هشة يصعب الحفاظ عليها.
  3. توقعات واضحة: كن واضحًا بشأن التوقعات الخاصة بنماذجك للتأكد من أن اختباراتك موثوقة وسهلة الفهم.
  4. الاستفادة من gomock.InOrder: استخدم gomock.InOrder لفرض ترتيب استدعاءات الطريقة عند الضرورة، مما يضمن استخدام نماذجك بالتسلسل المتوقع.

خاتمة
GoMock هي أداة لا تقدر بثمن لمطوري Go، حيث توفر القدرة على إنشاء اختبارات وحدة قوية ومعزولة من خلال التبعيات الساخرة. باستخدام GoMock بفعالية، يمكنك التأكد من أن اختباراتك موثوقة وقابلة للتكرار ومركزة على منطق الكود قيد الاختبار. سواء كنت تختبر تفاعلات معقدة أو ببساطة تعزل التعليمات البرمجية الخاصة بك عن الأنظمة الخارجية، فإن GoMock يوفر المرونة والتحكم اللازمين للحفاظ على تغطية اختبار عالية الجودة.
من خلال دمج GoMock في استراتيجية الاختبار الخاصة بك، يمكنك تعزيز فعالية اختباراتك، مما يؤدي إلى تطبيقات Go أكثر موثوقية وقابلة للصيانة.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/keploy/an-introduction-to-gomock-mocking-in-go-2ljd?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3