Angular.js: Function.prototype.bind.apply (...) no es un constructor

Creado en 22 jun. 2016  ·  2Comentarios  ·  Fuente: angular/angular.js

Estoy tratando de aprender angular-tdd

con estas versiones mis pruebas funcionan bien
versión de dependencias
angular: 1.4.8
simulacros angulares: 1.4.8
nodo: v4.4.5
karma-cli: 0.13.22

pero cuando uso
versiones
"angular": "^ 1.5.7"
"angulares-simulacros": "^ 1.5.7"

arroja un error

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)
invalid

Comentario más útil

El problema es usar la sintaxis de la flecha gruesa para definir el constructor de funciones para la clase de controlador. Suponiendo que su función pasada como segundo argumento a module.controller es Foo , Angular llamará new Foo(...) en ella, lo cual es ilegal con la sintaxis de flecha gruesa en ES6.

Todos 2 comentarios

El problema es usar la sintaxis de la flecha gruesa para definir el constructor de funciones para la clase de controlador. Suponiendo que su función pasada como segundo argumento a module.controller es Foo , Angular llamará new Foo(...) en ella, lo cual es ilegal con la sintaxis de flecha gruesa en ES6.

@wesleycho , tiene razón. Los controladores deben ser instanciables (es decir, llamados con new ), por lo que cosas como las funciones de flecha ( () => {...} ) y los métodos de objetos abreviados ( {someMethod() {...}} ) no son adecuados para los controladores.

Consulte https://github.com/angular/angular.js/issues/14766#issuecomment -226005516 para obtener más detalles.

¿Fue útil esta página
0 / 5 - 0 calificaciones