أنا أحاول أن أتعلم الزاوي tdd
مع هذه الإصدارات تعمل اختباراتي بشكل جيد
نسخة التبعيات
الزاوي: 1.4.8
الزاوي mocks: 1.4.8
العقدة: v4.4.5
الكرمة- CLI: 0.13.22
ولكن عندما أستخدم
الإصدارات
"الزاوي": "^ 1.5.7"
"الزاوي mocks": "^ 1.5.7"
يرمي خطأ
karma start karma.conf.js
22 06 2016 16:53:04.002:WARN [karma]: No captured browser, open http://localhost:9876/
22 06 2016 16:53:04.012:INFO [karma]: Karma v0.13.22 server started at http://localhost:9876/
22 06 2016 16:53:04.018:INFO [launcher]: Starting browser Chrome
22 06 2016 16:53:05.959:INFO [Chrome 51.0.2704 (Linux 0.0.0)]: Connected on socket /#Vfy_Fpt6BZ2INRyEAAAA with id 36097936
Chrome 51.0.2704 (Linux 0.0.0) calculator sum 1 + 1 should equal 2 FAILED
TypeError: Function.prototype.bind.apply(...) is not a constructor
at Object.instantiate (/home/malanay/workspace/AngularJs-BDD-101/node_modules/angular/angular.min.js:41:477)
at /home/kiro112/workspace/AngularJs-BDD-101/node_modules/angular/angular.min.js:90:3
at /home/kiro112/workspace/AngularJs-BDD-101/node_modules/angular-mocks/angular-mocks.js:2214:12
at Object.it (/home/kiro112/workspace/AngularJs-BDD-101/tests/calculator.controller.test.js:17:21)
Chrome 51.0.2704 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) (0 secs / 0.027 Chrome 51.0.2704 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.037 secs / 0.027 secs)
تكمن المشكلة في استخدام بنية السهم السميك لتحديد مُنشئ الوظيفة لفئة وحدة التحكم. بافتراض أن وظيفتك تم تمريرها كوسيطة ثانية إلى module.controller Foo
، فإن Angular ستستدعي new Foo(...)
عليها ، وهو أمر غير قانوني مع صيغة السهم السمين في ES6.
wesleycho ، صحيح. يجب أن تكون أدوات التحكم قابلة للحساب (على سبيل المثال تسمى بـ new
) ، لذا فإن أشياء مثل وظائف الأسهم ( () => {...}
) وأساليب كائن الاختزال ( {someMethod() {...}}
) ليست مناسبة لوحدات التحكم.
راجع https://github.com/angular/angular.js/issues/14766#issuecomment -226005516 لمزيد من التفاصيل.
التعليق الأكثر فائدة
تكمن المشكلة في استخدام بنية السهم السميك لتحديد مُنشئ الوظيفة لفئة وحدة التحكم. بافتراض أن وظيفتك تم تمريرها كوسيطة ثانية إلى module.controller
Foo
، فإن Angular ستستدعيnew Foo(...)
عليها ، وهو أمر غير قانوني مع صيغة السهم السمين في ES6.