Protractor: دعم إضافة وحدات وهمية لتطبيقات Angular 2

تم إنشاؤها على ٦ أبريل ٢٠١٦  ·  31تعليقات  ·  مصدر: angular/protractor

لا يمكن حاليًا إضافة وحدات نموذجية لتطبيقات Angular 2.

تعكس هذه المشكلة TODO المنشور هنا .

ولإحالة مشاركة SO ذات الصلة: http://stackoverflow.com/questions/36354233/protractor-mocking-backend-with-angular2-on-api-request.

شكرا لك.

user experience feature request

التعليق الأكثر فائدة

@ jlin412 نعم ، في النهاية ، لكنها ستتطلب التحقيق والتفكير الدقيق حول كيفية عملها في كل من aot وغير aot. إذا كنت تستخدم هجينًا ، فستستمر في العمل مع وحدات البت ng1.

أي شخص آخر - يرجى استخدام استجابة github للرموز التعبيرية لمشكلات 1+. إضافة التعليقات تجعل من الصعب تحليل التقدم الحقيقي. سأقوم بإزالة هذه التعليقات حتى يمكن قراءتها. شكرا!

ال 31 كومينتر

juliemr هل نخطط لدعم mock للزاوية 2؟ إذا نعم متى؟ إذا استخدمنا الوضع المختلط ، فهل سيستمر عمل الوهمي في هذه الأثناء؟

@ jlin412 نعم ، في النهاية ، لكنها ستتطلب التحقيق والتفكير الدقيق حول كيفية عملها في كل من aot وغير aot. إذا كنت تستخدم هجينًا ، فستستمر في العمل مع وحدات البت ng1.

أي شخص آخر - يرجى استخدام استجابة github للرموز التعبيرية لمشكلات 1+. إضافة التعليقات تجعل من الصعب تحليل التقدم الحقيقي. سأقوم بإزالة هذه التعليقات حتى يمكن قراءتها. شكرا!

juliemr هل لدينا الوقت المقدر للوصول على التنفيذ الوهمي للزاوية 2؟
أيضا ، هل هناك بديل يمكننا استخدامه في هذه الأثناء؟

من: http://stackoverflow.com/questions/36354233/protractor-mocking-backend-with-angular2-on-api-request.

وينطبق الشيء نفسه على حزم http-backend-proxy و httpbackend.

لذلك ، قمت بإنشاء بيئة اختبار E2E باستخدام عامل إنشاء عامل ، لكنني أشعر أن التنفيذ مبالغ فيه.

هل لديك حاليا أفضل الممارسات؟

واجهت نفس المشكلة للسخرية من مكالماتي الخلفية. نظرًا لأننا نستخدم البرامج الوسيطة connect لتشغيل تطبيقنا ، فقد قمت بإنشاء مكون إضافي يسمح لك بالسخرية من طلب http الزاوي 1 و 2 http.

https://mdasberg.github.io/ng-apimock/

ربما يمكنك استخدامه.

لست متأكدًا من الآلية التي يمكن من خلالها القيام بذلك ، لكنني أعتقد أن النهج الساذج لتثبيت وحدات وهمية سيكون كما يلي:

سوف تتجاوز المنقلة بطريقة أو بأخرى كلتا الطريقتين:

  • platformBrowserDynamic().bootstrapModule
  • platformBrowser().bootstrapModuleFactory

في مكانها ، سيكون غلافًا بسيطًا يبني ngModule جديدًا ويوفر الوحدات النمطية التي نريد سخرية منها (يوجد أدناه رمز زائف للشكل الذي سيبدو عليه):

function bootstrapModuleOverride (moduleToBootstrap) {
  @NgModule({
    imports: [moduleToBootstrap],
    provide: ArrayOfMockModules,
    bootstrap: moduleToBootstrap.bootstrap
  })
  class moduleToBoostrapWrapper {}

  platformBrowserDynamic().bootstrapModule(moduleToBoostrapWrapper);
}

هل لديك أي فكرة عما إذا كان هناك إصدار مخطط لهذه الميزة؟

+1 لهذه الميزة. نحتاج إلى محاكاة في اختبارات e2e في تطبيقات Angular 2+!

Angular 2+ آخذ في الازدياد ، لذا أصبحت هذه الميزة ملحة جدًا :)

نعم أمر بالغ الأهمية لسير العمل لدينا في الوقت الحالي.

نحن بالفعل في angular5 وما زلنا غير قادرين على محاكاة http في مواصفات e2e 😕

( tauil عالم صغير ، هاه؟)

فيما يلي الاستخدامات الشائعة التي أحتاجها إلى addMockModule من أجل.

1) حقن اعتراضات مخصصة.
https://angular.io/guide/http#writing -an-interceptor
مثال على التقاط نشاط http والكتابة على القرص باستخدام المنقلة إذا فشل الاختبار.

2) تجاوز الوظائف في الخدمات عادة للاستهزاء بخدمات بيانات الطرف الثالث.

      .decorator(
          'xyzService',
          [
            '$q', '$delegate',
            ($q, $delegate) => {
              $delegate.isEnabled = () => true;
              return $delegate;
            }
            $delegate.getProfileDetail = () =>
                  $q.when({name: 'Tester 001', title: 'E2E Tester'});
          ])

بالنسبة للخدمات المخصصة: يمكننا اتباع نهج نموذج httpclient. من المحتمل أن يؤدي تنفيذ (1) إلى حل هذا أيضًا.

3) للوصول إلى العناصر الداخلية لكائنات الصفحة الفردية (على الرغم من عدم كوشير)
ng.probe ($ 0) ._ معلومات التصحيح
منقلة تنفيذ سكريبت

متى سيتم تنفيذه؟

حقا يمكن أن تفعل مع هذا!

هذه ميزة لا غنى عنها ، فكيف يكون عمرها عامين ؟!

كحل بديل ، يمكنك استخدام jswiremock لإيقاف مكالمات النهاية الخلفية. لقد كتبت بعض التعليمات هنا: https://gist.github.com/jamescookie/f7b854226ca1e133d1b7b2798095b7f4

بديل آخر هو نوك .
إنها مكتبة عالمية للسخرية من طلبات HTTP ، ولا تعتمد على أي إطار عمل.

يمكنك استخدام ng-apimock الموجود بالفعل في موقع المنقلة. هناك مدونة رائعة حول هذا الموضوع هنا

يمكنك استخدامه لتطبيقات AngularJs و Angular

هذه الميزة بالغة الأهمية لدرجة أنني أعتقد أنها يجب أن تكون جزءًا من المنقلة الأساسية ، حتى لو تم تضمين ng-apimock في مكتبات المنقلة الأساسية.

أحاول رفع الإعجاب قدر المستطاع ، ما هو التقدم المحرز في هذه الميزة؟ إنه مانع ثقيل في الوقت الحالي.

على محمل الجد ، هل تم التخلي عن المنقلة للتو من أجل Angular؟

لذلك يمكن تحقيق ذلك جزئيًا دون أي تغييرات في المنقلة أو الزاوية اليوم. يمكنك إنشاء تكوين "وهمي" لـ ng serve والذي سيقدم مجموعة مختلفة من الوحدات. يجب أن يسمح لك هذا بإجراء اختبار الواجهة الخلفية دون الحاجة إلى تشغيل خوادم تابعة وتجنب الحاجة إلى تنفيذ الاستهزاء في طبقة HTTP. لقد أنشأت نموذجًا لمستودع يوضح هذا هنا: https://github.com/westonpace/angular-example-mock-services

أوجز أيضًا الخطوات المطلوبة في إجابتي على سؤال SO هنا: https://stackoverflow.com/questions/39942118/how-to-inject-different-service-based-on-certain-build-environment-in-angular2 / 51772549 # 51772549

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

ملخص لطريقة سريعة - نظيفة - بدون مكتبة للتعامل مع هذا هنا:

https://stackoverflow.com/questions/36354233/protractor-mocking-backend-with-angular2-on-api-request/51834607#51834607

هل هناك أي تحديث على ذلك؟ @ jlin412 قلت إن الأمر سيتطلب تحقيقًا وتفكيرًا دقيقًا - هل بدأت في هذا؟

هل هناك أي تحديث على ذلك؟ @ jlin412 قلت إن الأمر سيتطلب تحقيقًا وتفكيرًا دقيقًا - هل بدأت في هذا؟

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

gabrieldoty باستخدام هذا النهج ، يمكنك السخرية من مستوى الخدمة ولكن ليس على مستوى http إذا فهمت جيدًا.
علاوة على ذلك ، في نهج التنمية المدفوعة بالسلوك ، تريد أن تكون نماذجك ديناميكية. ستعمل خطوات الاختبار المختلفة على إعداد نماذج مختلفة. يبدو من الصعب تحقيق هذا مع هذا الإعداد.

gaeljw نقاط عظيمة! أستطيع أن أرى بعض الطرق الصعبة إلى حد ما للتعامل مع السخرية الديناميكية ، ولكن لا شك في أن الحل الديناميكي هو الأفضل!

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

شكرا على تلك الأفكار!

أي خبر عن هذا؟ يبدو أن تطوير المنقلة لم يعد نشطًا ...

أي تحديثات؟

ستساعد الوحدات النمطية السخرية في الالتفاف حول # 4300

واو ، هذه التذكرة عمرها 4 سنوات تقريبًا الآن! هل هناك أي تحديثات؟

أى اخبار؟

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