Angular.js: Function.prototype.bind.apply(...)はコンストラクターではありません

作成日 2016年06月22日  ·  2コメント  ·  ソース: angular/angular.js

私はangular-tddを学ぼうとしています

このバージョンでは、私のテストは正常に機能しています
依存バージョン
角度:1.4.8
角度モック:1.4.8
ノード:v4.4.5
カルマ-cli:0.13.22

しかし、私が使用するとき
バージョン
"角度": "^ 1.5.7"
"angular-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)
invalid

最も参考になるコメント

問題は、太い矢印構文を使用して、コントローラークラスの関数コンストラクターを定義することです。 module.controllerに2番目の引数として渡された関数がFooであるとすると、Angularはnew Foo(...)を呼び出します。これは、ES6の太い矢印構文では不正です。

全てのコメント2件

問題は、太い矢印構文を使用して、コントローラークラスの関数コンストラクターを定義することです。 module.controllerに2番目の引数として渡された関数がFooであるとすると、Angularはnew Foo(...)を呼び出します。これは、ES6の太い矢印構文では不正です。

@wesleycho 、そうです。 コントローラはインスタンス化可能である必要があるため(つまり、 new呼び出される)、矢印関数( () => {...} )や短縮オブジェクトメソッド( {someMethod() {...}} )などはコントローラには適していません。

詳細については、 https: //github.com/angular/angular.js/issues/14766#issuecomment-226005516を参照してください。

このページは役に立ちましたか?
0 / 5 - 0 評価