Saya mencoba belajar angular-tdd
dengan versi ini pengujian saya berfungsi dengan baik
versi ketergantungan
sudut: 1.4.8
sudut-mengolok-olok: 1.4.8
simpul: v4.4.5
karma-cli: 0.13.22
tetapi ketika saya menggunakan
versi
"sudut": "^1.5.7"
"angular-mocks": "^1.5.7"
itu melempar kesalahan
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)
Masalahnya adalah menggunakan sintaks panah gemuk untuk mendefinisikan konstruktor fungsi untuk kelas pengontrol. Dengan asumsi fungsi Anda diteruskan sebagai argumen kedua ke module.controller adalah Foo
, Angular akan memanggil new Foo(...)
di atasnya, yang ilegal dengan sintaks panah gemuk di ES6.
@wesleycho , benar. Pengontrol harus dapat digunakan (yaitu dipanggil dengan new
), jadi hal-hal seperti fungsi panah ( () => {...}
) dan metode objek steno ( {someMethod() {...}}
) tidak cocok untuk pengontrol.
Lihat https://github.com/angular/angular.js/issues/14766#issuecomment -226005516 untuk detail lebih lanjut.
Komentar yang paling membantu
Masalahnya adalah menggunakan sintaks panah gemuk untuk mendefinisikan konstruktor fungsi untuk kelas pengontrol. Dengan asumsi fungsi Anda diteruskan sebagai argumen kedua ke module.controller adalah
Foo
, Angular akan memanggilnew Foo(...)
di atasnya, yang ilegal dengan sintaks panah gemuk di ES6.