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)

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ฌธ์ œ๋Š” ๋šฑ๋šฑํ•œ ํ™”์‚ดํ‘œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค์˜ ํ•จ์ˆ˜ ์ƒ์„ฑ์ž๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. module.controller์— ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ํ•จ์ˆ˜๊ฐ€ Foo ๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด Angular๋Š” ์ด์— ๋Œ€ํ•ด new Foo(...) ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ES6์˜ ๋šฑ๋šฑํ•œ ํ™”์‚ดํ‘œ ๊ตฌ๋ฌธ์—์„œ ๋ถˆ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  2 ๋Œ“๊ธ€

๋ฌธ์ œ๋Š” ๋šฑ๋šฑํ•œ ํ™”์‚ดํ‘œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค์˜ ํ•จ์ˆ˜ ์ƒ์„ฑ์ž๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. module.controller์— ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ํ•จ์ˆ˜๊ฐ€ Foo ๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด Angular๋Š” ์ด์— ๋Œ€ํ•ด new Foo(...) ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ES6์˜ ๋šฑ๋šฑํ•œ ํ™”์‚ดํ‘œ ๊ตฌ๋ฌธ์—์„œ ๋ถˆ๋ฒ•์ž…๋‹ˆ๋‹ค.

@wesleycho ๋งž์Šต๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ธ์Šคํ„ด์Šคํ™”ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ(์˜ˆ: new ํ˜ธ์ถœ) ํ™”์‚ดํ‘œ ํ•จ์ˆ˜( () => {...} ) ๋ฐ ์•ฝ์‹ ๊ฐœ์ฒด ๋ฉ”์„œ๋“œ( {someMethod() {...}} )์™€ ๊ฐ™์€ ๊ฒƒ์€ ์ปจํŠธ๋กค๋Ÿฌ์— ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ https://github.com/angular/angular.js/issues/14766#issuecomment -226005516์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰