Angular.js: ํ˜ธ์ฃผ์—์„œ ์‹คํ–‰ํ•˜๋ฉด ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2013๋…„ 11์›” 19์ผ  ยท  14์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: angular/angular.js

์ด ๋Œ“๊ธ€์—๋ณด๊ณ  ๋œ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. https://github.com/angular/angular.js/pull/3474#issuecomment -23241136

๋‚˜๋Š” ๋˜ํ•œ ํ˜ธ์ฃผ / ์‹œ๋“œ๋‹ˆ์— ์žˆ์Šต๋‹ˆ๋‹ค.

--force ๋กœ ๊ฑด๋„ˆ ๋›ธ ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ๊ธฐ๋ถ€์— ๋Œ€ํ•œ ๊นจ๋—ํ•œ ๊ฑด๊ฐ• ์ฒญ๊ตฌ์„œ๋ฅผ๋ฐ›๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

Chrome 31.0.1650 (Mac OS X 10.9.0) ngMock TzDate should fake getHours method FAILED
    Expected 4 to be 3.
    Error: Expected 4 to be 3.
        at null.<anonymous> (/Users/brett/scm/github/angular.js/test/ngMock/angular-mocksSpec.js:60:29)
    Expected 1 to be 0.
    Error: Expected 1 to be 0.
        at null.<anonymous> (/Users/brett/scm/github/angular.js/test/ngMock/angular-mocksSpec.js:64:29)
    Expected 22 to match 21.
    Error: Expected 22 to match 21.
        at null.<anonymous> (/Users/brett/scm/github/angular.js/test/ngMock/angular-mocksSpec.js:68:29)
ngMock moderate investigation broken expected use bug

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

ํ˜ธ์ฃผ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋น„์Šทํ•œ ์Šคํƒ ์ถ”์ ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

(92:86:sษพห™ษ”วdssสžษ”oษฏ-ษนษlnฦƒuษ/สžษ”oษฏฦƒu/ส‡sวส‡/sษพห™ษนษlnฦƒuษ/qnษฅส‡ฤฑฦƒ/ษฏษ”s/ส‡ส‡วษนq/sษนวsn/) <snoษฏสŽuouษ>ห™llnu ส‡ษ        
ห™12 ษฅษ”ส‡ษษฏ oส‡ 22 pวส‡ษ”วdxว :ษนoษนษนว    
ห™12 ษฅษ”ส‡ษษฏ oส‡ 22 pวส‡ษ”วdxว    
(92:46:sษพห™ษ”วdssสžษ”oษฏ-ษนษlnฦƒuษ/สžษ”oษฏฦƒu/ส‡sวส‡/sษพห™ษนษlnฦƒuษ/qnษฅส‡ฤฑฦƒ/ษฏษ”s/ส‡ส‡วษนq/sษนวsn/) <snoษฏสŽuouษ>ห™llnu ส‡ษ        
ห™0 วq oส‡ 1 pวส‡ษ”วdxว :ษนoษนษนว    
ห™0 วq oส‡ 1 pวส‡ษ”วdxว    
(92:06:sษพห™ษ”วdssสžษ”oษฏ-ษนษlnฦƒuษ/สžษ”oษฏฦƒu/ส‡sวส‡/sษพห™ษนษlnฦƒuษ/qnษฅส‡ฤฑฦƒ/ษฏษ”s/ส‡ส‡วษนq/sษนวsn/) <snoษฏสŽuouษ>ห™llnu ส‡ษ        
ห™3 วq oส‡ 4 pวส‡ษ”วdxว :ษนoษนษนว    
ห™3 วq oส‡ 4 pวส‡ษ”วdxว    
pวlฤฑษษŸ poษฅส‡วษฏ sษนnoษฅส‡วฦƒ วสžษษŸ plnoษฅs วส‡ษpzส‡ สžษ”oษฏฦƒu (0ห™9ห™01 x so ษ”ษษฏ) 0561ห™0ห™13 วษฏoษนษฅษ”

(๋ชจ๋“  ์ง„์ง€ํ•˜๊ฒŒ ๋ฌธ์ œ๋ฅผ ๋‚˜์—๊ฒŒ ํ• ๋‹นํ•˜๊ณ  ์‚ดํŽด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค)

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

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์— ์ง€๋ฆฌ์  ์œ„์น˜ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ• ๊นŒ์š”?

ํ˜ธ์ฃผ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋น„์Šทํ•œ ์Šคํƒ ์ถ”์ ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

(92:86:sษพห™ษ”วdssสžษ”oษฏ-ษนษlnฦƒuษ/สžษ”oษฏฦƒu/ส‡sวส‡/sษพห™ษนษlnฦƒuษ/qnษฅส‡ฤฑฦƒ/ษฏษ”s/ส‡ส‡วษนq/sษนวsn/) <snoษฏสŽuouษ>ห™llnu ส‡ษ        
ห™12 ษฅษ”ส‡ษษฏ oส‡ 22 pวส‡ษ”วdxว :ษนoษนษนว    
ห™12 ษฅษ”ส‡ษษฏ oส‡ 22 pวส‡ษ”วdxว    
(92:46:sษพห™ษ”วdssสžษ”oษฏ-ษนษlnฦƒuษ/สžษ”oษฏฦƒu/ส‡sวส‡/sษพห™ษนษlnฦƒuษ/qnษฅส‡ฤฑฦƒ/ษฏษ”s/ส‡ส‡วษนq/sษนวsn/) <snoษฏสŽuouษ>ห™llnu ส‡ษ        
ห™0 วq oส‡ 1 pวส‡ษ”วdxว :ษนoษนษนว    
ห™0 วq oส‡ 1 pวส‡ษ”วdxว    
(92:06:sษพห™ษ”วdssสžษ”oษฏ-ษนษlnฦƒuษ/สžษ”oษฏฦƒu/ส‡sวส‡/sษพห™ษนษlnฦƒuษ/qnษฅส‡ฤฑฦƒ/ษฏษ”s/ส‡ส‡วษนq/sษนวsn/) <snoษฏสŽuouษ>ห™llnu ส‡ษ        
ห™3 วq oส‡ 4 pวส‡ษ”วdxว :ษนoษนษนว    
ห™3 วq oส‡ 4 pวส‡ษ”วdxว    
pวlฤฑษษŸ poษฅส‡วษฏ sษนnoษฅส‡วฦƒ วสžษษŸ plnoษฅs วส‡ษpzส‡ สžษ”oษฏฦƒu (0ห™9ห™01 x so ษ”ษษฏ) 0561ห™0ห™13 วษฏoษนษฅษ”

(๋ชจ๋“  ์ง„์ง€ํ•˜๊ฒŒ ๋ฌธ์ œ๋ฅผ ๋‚˜์—๊ฒŒ ํ• ๋‹นํ•˜๊ณ  ์‚ดํŽด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค)

ํ˜ธ์ฃผ ์—ฌํ–‰์— ๋น„์šฉ์ด๋“ค ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ง์ ‘ ์ฒ˜๋ฆฌ ํ•  ์˜ํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. :)

๋‰ด์งˆ๋žœ๋“œ์—์„œ๋„ ๊ฐ™์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์™œ ๊ทธ๋Ÿฐ์ง€ ์ดํ•ด๊ฐ€ ์•ˆ ๋ผ์š”. TzDate mock์€ ์‹œ๊ฐ„๋Œ€์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋„๋ก ํŠน๋ณ„ํžˆ ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ์„ค์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜คํ”„์…‹์„ ๊ณ„์‚ฐ ํ•œ ๋‹ค์Œ ๋ชจ๋“  ์‹œ๊ฐ„๋Œ€์—์„œ ๋™์ผํ•˜๊ฒŒ ๋‚ ์งœ๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ฐธ์กฐ : https://github.com/angular/angular.js/blob/547871e779f7a1e340c03296405735415764a0e8/src/ngMock/angular-mocks.js#L647 -L649

ํ˜ธ์ฃผ์™€ ๋‰ด์งˆ๋žœ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์‹œ๊ฐ„๋Œ€์—์„œ ์ด๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์•„์ด๋””์–ด?

@IgorMinar ์•ˆ๋…•ํ•˜์„ธ์š”! ํ•˜๋‚˜๋งŒ ๊ฐ์•ˆํ•  ๋•Œ ์ด๊ฒƒ์€ DST ๋ฌธ์ œ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค (DST๋ฅผ ์—ฐ์Šตํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ฆฌ์ฆˆ๋ฒˆ์œผ๋กœ ์ด์‚ฌํ•˜๋ฉด ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผ๋ฉ๋‹ˆ๋‹ค). ํฌ์ธํ„ฐ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋„์›€์ด๋˜๋Š” ๋‹จ์„œ์˜€์Šต๋‹ˆ๋‹ค. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ถ”๊ฐ€ ์กฐ์‚ฌ์—์„œ ์ด๊ฒƒ์€ ๊ฐ๋„ ํ…Œ์ŠคํŠธ์˜ ๋ฒ„๊ทธ์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฌธ์ œ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. DST๋Š” 1971 ๋…„ ํ˜ธ์ฃผ์—์„œ ์‹œ์ž‘๋˜์—ˆ์œผ๋ฏ€๋กœ UNIX ์‹œ๋Œ€๋Š” 10:00 UTC + 10, 1/1/70์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์Œ์˜ ์˜คํ”„์…‹์„ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ŠคํŠธ์—์„œ ์ด๋Ÿฌํ•œ ์˜คํ”„์…‹์€ +10 ๋Œ€์‹  +11๋กœ ์‹œ๊ฐ„๋Œ€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋…ธ๋“œ์—์„œ๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ node
> new Date(0)
Thu Jan 01 1970 10:00:00 GMT+1000 (EST)
> new Date(-36000000)
Thu Jan 01 1970 01:00:00 GMT+1100 (EST)
> new Date(1970, 0, 1)
Thu Jan 01 1970 00:00:00 GMT+1100 (EST)
> new Date(1970, 0, 1, 1, 0, 0)
Thu Jan 01 1970 01:00:00 GMT+1100 (EST)

๊ฒฐ๊ณผ๋Š” ๋‚ด๊ฐ€ ์ œ์–ด ํ•  ์ˆ˜์—†๋Š” ์กฐ๊ฑด์—์„œ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Safari๋Š” ์‹ฌ์ง€์–ด ์ƒˆ๋กœ์šด Date (0)์—์„œ๋„ ์ž˜๋ชป ์ธ์‹ํ•˜๊ณ , ์žฌํ˜„ ํ•  ์ˆ˜์—†๋Š” ์ผ๋ถ€ ์กฐ๊ฑด์—๋Š” ์ผ๋ถ€ Chrome ํƒญ (์นด๋ฅด๋งˆ์—์„œ์™€ ๊ฐ™์ด ์ƒˆ๋กœ์šด ํƒญ์ด ์•„๋‹˜)์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. .

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ์Œ์ˆ˜๊ฐ€๋˜์ง€ ์•Š๋Š” ๋‚ ์งœ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•ฝ๊ฐ„์˜ ๋ฌธ์ œ์ด์ง€๋งŒ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฌดํšจํ™”ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ES5 15.9.1.8 (https://es5.github.io/#x15.9.1.8) ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

"ECMAScript์˜ ๊ตฌํ˜„์€ ์ •ํ™•ํ•œ ์‹œ๊ฐ„์ด ์ผ๊ด‘ ์ ˆ์•ฝ ์‹œ๊ฐ„์˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ด์„œ๋Š” ์•ˆ๋˜๋ฉฐ, ํ˜„์žฌ ์ผ๊ด‘ ์ ˆ์•ฝ ์‹œ๊ฐ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•ด๋‹น ์‹œ๊ฐ„์— ์‚ฌ์šฉ ๋˜์—ˆ๋‹ค๋ฉด ์ผ๊ด‘ ์ ˆ์•ฝ ์‹œ๊ฐ„์ด ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€ ๋งŒ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ผ€์ผ์ด ์—ฐ์ค‘ ์ผ๊ด‘ ์ ˆ์•ฝ ์‹œ๊ฐ„์ œ๋ฅผ ์ค€์ˆ˜ํ•œ ์—ฐ๋„๋ฅผ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ์ด ์ผ๊ด‘ ์ ˆ์•ฝ ์‹œ๊ฐ„์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ ECMAScript์˜ ๊ตฌํ˜„์€ ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ์ด ์ œ๊ณตํ•˜๋Š” ๋™๋“ฑํ•œ ์—ฐ๋„ (๋™์ผํ•œ ์œค๋…„ ๋ฐ ๋™์ผํ•œ ์‹œ์ž‘ ์š”์ผ)์— ํ•ด๋‹น ์—ฐ๋„๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋งคํ•‘ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๊ด‘ ์ ˆ์•ฝ ์‹œ๊ฐ„ ์ •๋ณด. ์œ ์ผํ•œ ์ œํ•œ์€ ๋™์ผํ•œ ๋ชจ๋“  ์—ฐ๋„๊ฐ€ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. "

๋‹ค๋ฅธ JS ์—”์ง„์€ ๋กœ์ปฌ ์‹œ๊ฐ„๋Œ€ ์กฐ์ •๊ณผ ๊ด€๋ จํ•˜์—ฌ 1970 ๋…„ ๋ฏธ๋งŒ์˜ ๋‚ ์งœ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ์—”์ง„์€ 1970 ๋…„ ๋ฏธ๋งŒ์˜ ์—ฐ๋„๋ฅผ ๋” ํ˜„๋Œ€์ ์ธ ์—ฐ๋„๋กœ ๋งคํ•‘ํ•˜๋ฏ€๋กœ ๊ทธ ๋‹น์‹œ ํ˜ธ์ฃผ๊ฐ€ DST๋ฅผ ์ค€์ˆ˜ํ•˜์ง€ ์•Š์•˜์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  DST๊ฐ€ ์ ์šฉ๋œ ๋‚ ์งœ๋ฅผ ๋ณด๋Š” ์ด์œ ๋ฅผ ์„ค๋ช… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ์กฐ : https://bugzilla.mozilla.org/show_bug.cgi?id=351066#c20 ๋ฐ https://bugzilla.mozilla.org/show_bug.cgi?id=1029923

+1

Lol (์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค)

HN.YC์—์„œ ์™”์Šต๋‹ˆ๋‹ค. ์žฌ๋ฐŒ ๋„ค์š”! : D ์›ƒ์Œ

+1-์ตœ๊ณ ์˜ ๋ฒ„๊ทธ ์‹ ๊ณ !

+1 ํ˜ธ์ฃผ๋Š” ๋‹ค์ด์ œ์ŠคํŠธ ๋ฃจํ”„๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

์ด๋Š” ์‚ฌ์–‘์˜ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ๋ฌธ์ œ๋Š” ์ˆ˜์ • ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ECMAscript ์‚ฌ์–‘์— ๋”ฐ๋ฅด๋ฉด ์˜ค๋Š˜๋‚ ์˜ DST๋Š” ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ์ ์šฉ๋˜์–ด์•ผํ•œ๋‹ค๊ณ  ๋ช…์‹œ๋˜์–ด ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, ํŠนํžˆ ์‚ฌ์šฉ์ž๋Š” ๋‹ค๋ฅธ ๋™์ž‘์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด์ „ DST ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ  ๋”ฐ๋ผ์„œ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” Date ์ฃผ์œ„์— ๋ž˜ํผ๋ฅผ ์ž‘์„ฑํ•ด์•ผํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์„ ์ฐพ์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ์–ด๋Š ๊ฒƒ์ด ๋” ์ข‹์€์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ํ˜„์žฌ ์†”๋ฃจ์…˜์ด ํ™•์‹คํžˆ ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

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