لقد انتقلنا مؤخرًا إلى angular 1.4 ، ولاحظنا فشل بعض الاختبارات بشكل متقطع بسبب الحالة المتبقية بين الاختبارات في ملفات تعريف الارتباط. يبدو أن الاستهزاء بملفات تعريف الارتباط قد أزيل من الزاوي في الإصدارات الأحدث. لدي زوجان من الغطس لتوضيح هذه النقطة.
هنا ، في angular 1.3 ، يتم تعيين ملف تعريف الارتباط في $ cookieStore في اختبار واحد ، ولم يتم تحديده في $ cookieStore في الاختبارات اللاحقة:
http://plnkr.co/edit/WbRKACxBvJkHUmJwntN4؟p=preview
ومع ذلك ، في Angular 1.4 ، لا يزال ملف تعريف الارتباط مضبوطًا على اختبارات لاحقة ، مما يؤدي إلى فشلها:
http://plnkr.co/edit/c6jpOmmSuufSYvQysdTQ؟p=preview
هل تمت إزالة هذه الوظيفة عن قصد ، وإذا كان الأمر كذلك ، فهل يمكنك إخباري بما هو الحل البديل المقصود؟
shahata هل تعرف بأي فرصة لماذا هناك فرق؟
Narretz في الإصدارات السابقة من Angular ، تمت السخرية من $browser.cookies()
تمامًا بواسطة ngMock
وكتابة ملف تعريف ارتباط من خلال $cookies
كتب إلى خريطة في الذاكرة وليس المتصفح. لقد ناقشنا هذا في الماضي ونظرنا في إضافة مجموعة أدوات اختبار ترتبط بآلية ملفات تعريف الارتباط الجديدة وتوفر أدوات للتحقق من أن ملفات تعريف الارتباط مكتوبة بالمعلمات الصحيحة (لم يعد الأمر يتعلق فقط بقيمة ملفات تعريف الارتباط) ، لكنني لا أعتقد هذا أمر بالغ الأهمية.
butchpeters أعتقد أن أفضل طريقة للذهاب هي أن تسخر من $cookies
في الاختبار:
module({$cookies: {
store:{},
put: function (key, value) { this.store[key] = value; },
get: function (key) { return this.store[key]; }
}});
ها هو برنامج plunker الثابت: http://plnkr.co/edit/LTQHDtDM5FOiTiXl2waT؟p=preview
هل يعتقد فريق Angular أنه لا أحد يحتاج إلى اختبار الإعداد والحصول على ملفات تعريف الارتباط باستخدام ngCookies؟ لقد صدمت عندما اكتشفت أنه بعد مرور عام على إصدار 1.4 ، لم يتم التعامل مع هذا الأمر بعد.
التعليق الأكثر فائدة
هل يعتقد فريق Angular أنه لا أحد يحتاج إلى اختبار الإعداد والحصول على ملفات تعريف الارتباط باستخدام ngCookies؟ لقد صدمت عندما اكتشفت أنه بعد مرور عام على إصدار 1.4 ، لم يتم التعامل مع هذا الأمر بعد.