AngularJS Unit Testing: Karma Jasmine Tutorial

ฮˆฮฝฮฑ ฮฑฯ€ฯŒ ฯ„ฮฑ ฯ€ฮนฮฟ ฮปฮฑฮผฯ€ฯฮฌ ฯ‡ฮฑฯฮฑฮบฯ„ฮทฯฮนฯƒฯ„ฮนฮบฮฌ ฯ„ฮฟฯ… Angular.JS ฮตฮฏฮฝฮฑฮน ฯ„ฮฟ ฮ”ฮฟฮบฮนฮผฮญฯ‚ ฮฌฯ€ฮฟฯˆฮท. ฮŒฯ„ฮฑฮฝ ฮฟฮน ฯ€ฯฮฟฮณฯฮฑฮผฮผฮฑฯ„ฮนฯƒฯ„ฮญฯ‚ ฯ„ฮทฯ‚ Google ฮฑฮฝฮญฯ€ฯ„ฯ…ฮพฮฑฮฝ ฯ„ฮฟ AngularJS, ฮตฮฏฯ‡ฮฑฮฝ ฯƒฯ„ฮฟ ฮผฯ…ฮฑฮปฯŒ ฯ„ฮฟฯ…ฯ‚ ฯ„ฮนฯ‚ ฮดฮฟฮบฮนฮผฮญฯ‚ ฮบฮฑฮน ฮฒฮตฮฒฮฑฮนฯŽฮธฮทฮบฮฑฮฝ ฯŒฯ„ฮน ฮฟฮปฯŒฮบฮปฮทฯฮฟ ฯ„ฮฟ ฯ€ฮปฮฑฮฏฯƒฮนฮฟ ฯ„ฮฟฯ… AngularJS ฮฎฯ„ฮฑฮฝ ฮดฮฟฮบฮนฮผฮฑฯƒฯ„ฮนฮบฯŒ.

ฮฃฯ„ฮฟ AngularJS, ฮท ฮดฮฟฮบฮนฮผฮฎ ฯ€ฯฮฑฮณฮผฮฑฯ„ฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฯƒฯ…ฮฝฮฎฮธฯ‰ฯ‚ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฯŽฮฝฯ„ฮฑฯ‚ ฯ„ฮฟ Karma (ฯ€ฮปฮฑฮฏฯƒฮนฮฟ). ฮ— ฮดฮฟฮบฮนฮผฮฎ Angular JS ฮผฯ€ฮฟฯฮตฮฏ ฮฝฮฑ ฯ€ฯฮฑฮณฮผฮฑฯ„ฮฟฯ€ฮฟฮนฮทฮธฮตฮฏ ฯ‡ฯ‰ฯฮฏฯ‚ Karma, ฮฑฮปฮปฮฌ ฯ„ฮฟ ฯ€ฮปฮฑฮฏฯƒฮนฮฟ Karma ฮญฯ‡ฮตฮน ฮผฮนฮฑ ฯ„ฯŒฯƒฮฟ ฮตฮพฮฑฮนฯฮตฯ„ฮนฮบฮฎ ฮปฮตฮนฯ„ฮฟฯ…ฯฮณฮนฮบฯŒฯ„ฮทฯ„ฮฑ ฮณฮนฮฑ ฯ„ฮท ฮดฮฟฮบฮนฮผฮฎ ฯ„ฮฟฯ… ฮบฯŽฮดฮนฮบฮฑ AngularJS, ฯ€ฮฟฯ… ฮตฮฏฮฝฮฑฮน ฮปฮฟฮณฮนฮบฯŒ ฮฝฮฑ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฮฑฯ…ฯ„ฯŒ ฯ„ฮฟ ฯ€ฮปฮฑฮฏฯƒฮนฮฟ.

  • ฮฃฯ„ฮฟ AngularJS, ฮผฯ€ฮฟฯฮฟฯฮผฮต ฮฝฮฑ ฮตฮบฯ„ฮตฮปฮญฯƒฮฟฯ…ฮผฮต ฮ”ฮฟฮบฮนฮผฮฎ ฮผฮฟฮฝฮฌฮดฮฑฯ‚ ฯ‡ฯ‰ฯฮนฯƒฯ„ฮฌ ฮณฮนฮฑ ฯ„ฮฟฯ…ฯ‚ ฮตฮปฮตฮณฮบฯ„ฮญฯ‚ ฮบฮฑฮน ฯ„ฮนฯ‚ ฮฟฮดฮทฮณฮฏฮตฯ‚.
  • ฮœฯ€ฮฟฯฮฟฯฮผฮต ฮตฯ€ฮฏฯƒฮทฯ‚ ฮฝฮฑ ฯ€ฯฮฑฮณฮผฮฑฯ„ฮฟฯ€ฮฟฮนฮฎฯƒฮฟฯ…ฮผฮต ฯ„ฮตฮปฮนฮบฮฎ ฮดฮฟฮบฮนฮผฮฎ ฯ„ฮฟฯ… AngularJS, ฮท ฮฟฯ€ฮฟฮฏฮฑ ฮดฮฟฮบฮนฮผฮฌฮถฮตฮน ฮฑฯ€ฯŒ ฯ„ฮทฮฝ ฮฟฯ€ฯ„ฮนฮบฮฎ ฮณฯ‰ฮฝฮฏฮฑ ฯ„ฮฟฯ… ฯ‡ฯฮฎฯƒฯ„ฮท.

ฮ•ฮนฯƒฮฑฮณฯ‰ฮณฮฎ & ฮ•ฮณฮบฮฑฯ„ฮฌฯƒฯ„ฮฑฯƒฮท ฯ„ฮฟฯ… ฯ€ฮปฮฑฮนฯƒฮฏฮฟฯ… Karma

ฮคฮฟ ฮบฮฌฯฮผฮฑ ฮตฮฏฮฝฮฑฮน ฮฑ ฮตฯฮณฮฑฮปฮตฮฏฮฟ ฮฑฯ…ฯ„ฮฟฮผฮฑฯ„ฮนฯƒฮผฮฟฯ ฮดฮฟฮบฮนฮผฯŽฮฝ ฮดฮทฮผฮนฮฟฯ…ฯฮณฮฎฮธฮทฮบฮต ฮฑฯ€ฯŒ ฯ„ฮทฮฝ ฮฟฮผฮฌฮดฮฑ Angular JS ฯ„ฮทฯ‚ Google. ฮคฮฟ ฯ€ฯฯŽฯ„ฮฟ ฮฒฮฎฮผฮฑ ฮณฮนฮฑ ฯ„ฮท ฯ‡ฯฮฎฯƒฮท ฯ„ฮฟฯ… Karma ฮตฮฏฮฝฮฑฮน ฮท ฮตฮณฮบฮฑฯ„ฮฌฯƒฯ„ฮฑฯƒฮท ฯ„ฮฟฯ… Karma. ฮคฮฟ Karma ฮตฮณฮบฮฑฮธฮฏฯƒฯ„ฮฑฯ„ฮฑฮน ฮผฮญฯƒฯ‰ npm (ฯ€ฮฟฯ… ฮตฮฏฮฝฮฑฮน ฮญฮฝฮฑฯ‚ ฮดฮนฮฑฯ‡ฮตฮนฯฮนฯƒฯ„ฮฎฯ‚ ฯ€ฮฑฮบฮญฯ„ฯ‰ฮฝ ฯ€ฮฟฯ… ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฮตฯฮบฮฟฮปฮท ฮตฮณฮบฮฑฯ„ฮฌฯƒฯ„ฮฑฯƒฮท ฮผฮฟฮฝฮฌฮดฯ‰ฮฝ ฯƒฮต ฯ„ฮฟฯ€ฮนฮบฯŒ ฮผฮทฯ‡ฮฌฮฝฮทฮผฮฑ).

ฮ•ฮณฮบฮฑฯ„ฮฌฯƒฯ„ฮฑฯƒฮท ฯ„ฮฟฯ… ฮšฮฌฯฮผฮฑ

ฮ— ฮตฮณฮบฮฑฯ„ฮฌฯƒฯ„ฮฑฯƒฮท ฯ„ฮฟฯ… Karma ฮผฮญฯƒฯ‰ npm ฮณฮฏฮฝฮตฯ„ฮฑฮน ฯƒฮต ฮผฮนฮฑ ฮดฮนฮฑฮดฮนฮบฮฑฯƒฮฏฮฑ ฮดฯฮฟ ฮฒฮทฮผฮฌฯ„ฯ‰ฮฝ.

ฮ’ฮฎฮผฮฑ 1) ฮ•ฮบฯ„ฮตฮปฮญฯƒฯ„ฮต ฯ„ฮทฮฝ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฮณฯฮฑฮผฮผฮฎ ฮผฮญฯƒฮฑ ฮฑฯ€ฯŒ ฯ„ฮท ฮณฯฮฑฮผฮผฮฎ ฮตฮฝฯ„ฮฟฮปฯŽฮฝ

npm install karma karma-chrome-launcher karma-jasmine

ฮ•ฮฝ,

  1. ฮคฮฟ npm ฮตฮฏฮฝฮฑฮน ฯ„ฮฟ ฮฒฮฟฮทฮธฮทฯ„ฮนฮบฯŒ ฯ€ฯฯŒฮณฯฮฑฮผฮผฮฑ ฮณฯฮฑฮผฮผฮฎฯ‚ ฮตฮฝฯ„ฮฟฮปฯŽฮฝ ฮณฮนฮฑ ฯ„ฮฟฮฝ ฮดฮนฮฑฯ‡ฮตฮนฯฮนฯƒฯ„ฮฎ ฯ€ฮฑฮบฮญฯ„ฯ‰ฮฝ ฮบฯŒฮผฮฒฮฟฯ… ฯ€ฮฟฯ… ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฯ„ฮทฮฝ ฮตฮณฮบฮฑฯ„ฮฌฯƒฯ„ฮฑฯƒฮท ฯ€ฯฮฟฯƒฮฑฯฮผฮฟฯƒฮผฮญฮฝฯ‰ฮฝ ฮปฮตฮนฯ„ฮฟฯ…ฯฮณฮนฮบฯŽฮฝ ฮผฮฟฮฝฮฌฮดฯ‰ฮฝ ฯƒฮต ฮฟฯ€ฮฟฮนฮฟฮดฮฎฯ€ฮฟฯ„ฮต ฮผฮทฯ‡ฮฌฮฝฮทฮผฮฑ.
  2. ฮ— ฯ€ฮฑฯฮฌฮผฮตฯ„ฯฮฟฯ‚ ฮตฮณฮบฮฑฯ„ฮฌฯƒฯ„ฮฑฯƒฮทฯ‚ ฮบฮฑฮธฮฟฮดฮทฮณฮตฮฏ ฯ„ฮฟ ฮฒฮฟฮทฮธฮทฯ„ฮนฮบฯŒ ฯ€ฯฯŒฮณฯฮฑฮผฮผฮฑ ฮณฯฮฑฮผฮผฮฎฯ‚ ฮตฮฝฯ„ฮฟฮปฯŽฮฝ npm ฯŒฯ„ฮน ฮฑฯ€ฮฑฮนฯ„ฮตฮฏฯ„ฮฑฮน ฮตฮณฮบฮฑฯ„ฮฌฯƒฯ„ฮฑฯƒฮท.
  3. ฮฅฯ€ฮฌฯฯ‡ฮฟฯ…ฮฝ 3 ฮฒฮนฮฒฮปฮนฮฟฮธฮฎฮบฮตฯ‚ ฯ€ฮฟฯ… ฮบฮฑฮธฮฟฯฮฏฮถฮฟฮฝฯ„ฮฑฮน ฯƒฯ„ฮท ฮณฯฮฑฮผฮผฮฎ ฮตฮฝฯ„ฮฟฮปฯŽฮฝ ฯ€ฮฟฯ… ฮฑฯ€ฮฑฮนฯ„ฮฟฯฮฝฯ„ฮฑฮน ฮณฮนฮฑ ฮฝฮฑ ฮตฯฮณฮฑฯƒฯ„ฮฟฯฮฝ ฮผฮต ฯ„ฮฟ ฮบฮฌฯฮผฮฑ.
    • ฮคฮฟ ฮบฮฌฯฮผฮฑ ฮตฮฏฮฝฮฑฮน ฮท ฮฒฮฑฯƒฮนฮบฮฎ ฮฒฮนฮฒฮปฮนฮฟฮธฮฎฮบฮท ฯ€ฮฟฯ… ฮธฮฑ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮทฮธฮตฮฏ ฮณฮนฮฑ ฮดฮฟฮบฮนฮผฮฑฯƒฯ„ฮนฮบฮฟฯฯ‚ ฯƒฮบฮฟฯ€ฮฟฯฯ‚.
    • ฮคฮฟ karma-chrome-launcher ฮตฮฏฮฝฮฑฮน ฮผฮนฮฑ ฮพฮตฯ‡ฯ‰ฯฮนฯƒฯ„ฮฎ ฮฒฮนฮฒฮปฮนฮฟฮธฮฎฮบฮท ฯ€ฮฟฯ… ฮตฯ€ฮนฯ„ฯฮญฯ€ฮตฮน ฯ„ฮทฮฝ ฮฑฮฝฮฑฮณฮฝฯŽฯฮนฯƒฮท ฯ„ฯ‰ฮฝ ฮตฮฝฯ„ฮฟฮปฯŽฮฝ karma ฮฑฯ€ฯŒ ฯ„ฮฟ ฯ€ฯฯŒฮณฯฮฑฮผฮผฮฑ ฯ€ฮตฯฮนฮฎฮณฮทฯƒฮทฯ‚ chrome.
    • karma-jasmine โ€“ ฮ‘ฯ…ฯ„ฯŒ ฮตฮณฮบฮฑฮธฮนฯƒฯ„ฮฌ ฯ„ฮฟ jasmine ฯ€ฮฟฯ… ฮตฮฏฮฝฮฑฮน ฮญฮฝฮฑ ฮตฮพฮฑฯฯ„ฯŽฮผฮตฮฝฮฟ ฯ€ฮปฮฑฮฏฯƒฮนฮฟ ฮณฮนฮฑ ฯ„ฮฟ Karma.

ฮ’ฮฎฮผฮฑ 2) ฮคฮฟ ฮตฯ€ฯŒฮผฮตฮฝฮฟ ฮฒฮฎฮผฮฑ ฮตฮฏฮฝฮฑฮน ฮฝฮฑ ฮตฮณฮบฮฑฯ„ฮฑฯƒฯ„ฮฎฯƒฮตฯ„ฮต ฯ„ฮฟ ฮฒฮฟฮทฮธฮทฯ„ฮนฮบฯŒ ฯ€ฯฯŒฮณฯฮฑฮผฮผฮฑ ฮณฯฮฑฮผฮผฮฎฯ‚ ฮตฮฝฯ„ฮฟฮปฯŽฮฝ karma. ฮ‘ฯ…ฯ„ฯŒ ฮฑฯ€ฮฑฮนฯ„ฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฯ„ฮทฮฝ ฮตฮบฯ„ฮญฮปฮตฯƒฮท ฮตฮฝฯ„ฮฟฮปฯŽฮฝ ฮณฯฮฑฮผฮผฮฎฯ‚ ฮบฮฌฯฮผฮฑ. ฮคฮฟ ฮฒฮฟฮทฮธฮทฯ„ฮนฮบฯŒ ฯ€ฯฯŒฮณฯฮฑฮผฮผฮฑ ฮณฯฮฑฮผฮผฮฎฯ‚ karma ฮธฮฑ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮทฮธฮตฮฏ ฮณฮนฮฑ ฯ„ฮทฮฝ ฯ€ฯฮฟฮตฯ„ฮฟฮนฮผฮฑฯƒฮฏฮฑ ฯ„ฮฟฯ… ฯ€ฮตฯฮนฮฒฮฌฮปฮปฮฟฮฝฯ„ฮฟฯ‚ ฮบฮฌฯฮผฮฑ ฮณฮนฮฑ ฮดฮฟฮบฮนฮผฮฎ.

ฮ“ฮนฮฑ ฮฝฮฑ ฮตฮณฮบฮฑฯ„ฮฑฯƒฯ„ฮฎฯƒฮตฯ„ฮต ฯ„ฮฟ ฮฒฮฟฮทฮธฮทฯ„ฮนฮบฯŒ ฯ€ฯฯŒฮณฯฮฑฮผฮผฮฑ ฮณฯฮฑฮผฮผฮฎฯ‚ ฮตฮฝฯ„ฮฟฮปฯŽฮฝ, ฮตฮบฯ„ฮตฮปฮญฯƒฯ„ฮต ฯ„ฮทฮฝ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฮณฯฮฑฮผฮผฮฎ ฮผฮญฯƒฮฑ ฮฑฯ€ฯŒ ฯ„ฮท ฮณฯฮฑฮผฮผฮฎ ฮตฮฝฯ„ฮฟฮปฯŽฮฝ

npm install karma-cli

ฮตฮฝ,

  • ฮคฮฟ karma-cli ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฯ„ฮทฮฝ ฮตฮณฮบฮฑฯ„ฮฌฯƒฯ„ฮฑฯƒฮท ฯ„ฮทฯ‚ ฮดฮนฮตฯ€ฮฑฯ†ฮฎฯ‚ ฮณฯฮฑฮผฮผฮฎฯ‚ ฮตฮฝฯ„ฮฟฮปฯŽฮฝ ฮณฮนฮฑ ฯ„ฮฟ ฮบฮฌฯฮผฮฑ ฯ€ฮฟฯ… ฮธฮฑ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮทฮธฮตฮฏ ฮณฮนฮฑ ฯ„ฮทฮฝ ฮตฮณฮณฯฮฑฯ†ฮฎ ฯ„ฯ‰ฮฝ ฮตฮฝฯ„ฮฟฮปฯŽฮฝ ฮบฮฌฯฮผฮฑ ฯƒฯ„ฮท ฮดฮนฮตฯ€ฮฑฯ†ฮฎ ฮณฯฮฑฮผฮผฮฎฯ‚ ฮตฮฝฯ„ฮฟฮปฯŽฮฝ.
  • ฮ”ฮนฮฑฮผฯŒฯฯ†ฯ‰ฯƒฮท ฯ„ฮฟฯ… ฯ€ฮปฮฑฮนฯƒฮฏฮฟฯ… ฮšฮฌฯฮผฮฑ

    ฮคฮฟ ฮตฯ€ฯŒฮผฮตฮฝฮฟ ฮฒฮฎฮผฮฑ ฮตฮฏฮฝฮฑฮน ฮฝฮฑ ฮดฮนฮฑฮผฮฟฯฯ†ฯŽฯƒฮตฯ„ฮต ฯ„ฮฟ ฮบฮฌฯฮผฮฑ ฯ€ฮฟฯ… ฮผฯ€ฮฟฯฮตฮฏ ฮฝฮฑ ฮณฮฏฮฝฮตฮน ฮผฮญฯƒฯ‰ ฯ„ฮทฯ‚ ฮตฮฝฯ„ฮฟฮปฮฎฯ‚

    "karma โ€“init"

    ฮœฮตฯ„ฮฌ ฯ„ฮทฮฝ ฮตฮบฯ„ฮญฮปฮตฯƒฮท ฯ„ฮฟฯ… ฯ€ฮฑฯฮฑฯ€ฮฌฮฝฯ‰ ฮฒฮฎฮผฮฑฯ„ฮฟฯ‚, ฯ„ฮฟ karma ฮธฮฑ ฮดฮทฮผฮนฮฟฯ…ฯฮณฮฎฯƒฮตฮน ฮญฮฝฮฑ ฮฑฯฯ‡ฮตฮฏฮฟ karma.conf.js. ฮคฮฟ ฮฑฯฯ‡ฮตฮฏฮฟ ฯ€ฮนฮธฮฑฮฝฯŒฯ„ฮฑฯ„ฮฑ ฮธฮฑ ฮผฮฟฮนฮฌฮถฮตฮน ฮผฮต ฯ„ฮฟ ฮฑฯ€ฯŒฯƒฯ€ฮฑฯƒฮผฮฑ ฯ€ฮฟฯ… ฯ†ฮฑฮฏฮฝฮตฯ„ฮฑฮน ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰

    files: [
      'Your application Name'/AngularJS/AngularJS.js',
      'Your application Name'/AngularJS-mocks/AngularJS-mocks.js',
      'lib/app.js',
      'tests/*.js'
    ]

    ฮคฮฑ ฯ€ฮฑฯฮฑฯ€ฮฌฮฝฯ‰ ฮฑฯฯ‡ฮตฮฏฮฑ ฮดฮนฮฑฮผฯŒฯฯ†ฯ‰ฯƒฮทฯ‚ ฮปฮญฮฝฮต ฯƒฯ„ฮฟฮฝ ฮบฮนฮฝฮทฯ„ฮฎฯฮฑ ฯ‡ฯฯŒฮฝฮฟฯ… ฮตฮบฯ„ฮญฮปฮตฯƒฮทฯ‚ ฯ„ฮฟฯ… karma ฯ„ฮฑ ฮฑฮบฯŒฮปฮฟฯ…ฮธฮฑ ฯ€ฯฮฌฮณฮผฮฑฯ„ฮฑ

    1. 'ฮŒฮฝฮฟฮผฮฑ ฯ„ฮทฯ‚ ฮฑฮฏฯ„ฮทฯƒฮฎฯ‚ ฯƒฮฑฯ‚' โ€“ ฮ‘ฯ…ฯ„ฯŒ ฮธฮฑ ฮฑฮฝฯ„ฮนฮบฮฑฯ„ฮฑฯƒฯ„ฮฑฮธฮตฮฏ ฮฑฯ€ฯŒ ฯ„ฮฟ ฯŒฮฝฮฟฮผฮฑ ฯ„ฮทฯ‚ ฮฑฮฏฯ„ฮทฯƒฮฎฯ‚ ฯƒฮฑฯ‚.
    2. ยปฮคฮฟ ฯŒฮฝฮฟฮผฮฑ ฯ„ฮทฯ‚ ฮตฯ†ฮฑฯฮผฮฟฮณฮฎฯ‚ ฯƒฮฑฯ‚'/AngularJS/AngularJS.js' โ€“ ฮ‘ฯ…ฯ„ฯŒ ฮปฮญฮตฮน ฯƒฯ„ฮฟ ฮบฮฌฯฮผฮฑ ฯŒฯ„ฮน ฮท ฮตฯ†ฮฑฯฮผฮฟฮณฮฎ ฯƒฮฑฯ‚ ฮตฮพฮฑฯฯ„ฮฌฯ„ฮฑฮน ฮฑฯ€ฯŒ ฯ„ฮนฯ‚ ฮฒฮฑฯƒฮนฮบฮญฯ‚ ฮผฮฟฮฝฮฌฮดฮตฯ‚ ฯƒฯ„ฮฟ AngularJS
    3. 'ฮคฮฟ ฯŒฮฝฮฟฮผฮฑ ฯ„ฮทฯ‚ ฮตฯ†ฮฑฯฮผฮฟฮณฮฎฯ‚ ฯƒฮฑฯ‚'/AngularJS-mocks/AngularJS-mocks.js' โ€“ ฮ‘ฯ…ฯ„ฯŒ ฮปฮญฮตฮน ฯƒฯ„ฮฟ ฮบฮฌฯฮผฮฑ ฮฝฮฑ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮฎฯƒฮตฮน ฯ„ฮท ฮปฮตฮนฯ„ฮฟฯ…ฯฮณฮฏฮฑ Unit Testing ฮณฮนฮฑ ฯ„ฮฟ AngularJS ฮฑฯ€ฯŒ ฯ„ฮฟ ฮฑฯฯ‡ฮตฮฏฮฟ Angular.JS-mocks.js.
    4. ฮŒฮปฮฑ ฯ„ฮฑ ฮบฯฯฮนฮฑ ฮฑฯฯ‡ฮตฮฏฮฑ ฮตฯ†ฮฑฯฮผฮฟฮณฮฎฯ‚ ฮฎ ฮตฯ€ฮนฯ‡ฮตฮนฯฮทฮผฮฑฯ„ฮนฮบฮฎฯ‚ ฮปฮฟฮณฮนฮบฮฎฯ‚ ฯ…ฯ€ฮฌฯฯ‡ฮฟฯ…ฮฝ ฯƒฯ„ฮฟฮฝ ฯ†ฮฌฮบฮตฮปฮฟ lib ฯ„ฮทฯ‚ ฮตฯ†ฮฑฯฮผฮฟฮณฮฎฯ‚ ฯƒฮฑฯ‚.
    5. ฮŸ ฯ†ฮฌฮบฮตฮปฮฟฯ‚ ฮดฮฟฮบฮนฮผฯŽฮฝ ฮธฮฑ ฯ€ฮตฯฮนฮญฯ‡ฮตฮน ฯŒฮปฮตฯ‚ ฯ„ฮนฯ‚ ฮดฮฟฮบฮนฮผฮญฯ‚ ฮผฮฟฮฝฮฌฮดฮฑฯ‚.

    ฮ“ฮนฮฑ ฮฝฮฑ ฮตฮปฮญฮณฮพฮตฯ„ฮต ฮตฮฌฮฝ ฯ„ฮฟ ฮบฮฌฯฮผฮฑ ฮปฮตฮนฯ„ฮฟฯ…ฯฮณฮตฮฏ, ฮดฮทฮผฮนฮฟฯ…ฯฮณฮฎฯƒฯ„ฮต ฮญฮฝฮฑ ฮฑฯฯ‡ฮตฮฏฮฟ ฯ€ฮฟฯ… ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน Sample.js, ฮฒฮฌฮปฯ„ฮต ฯ„ฮฟฮฝ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฮบฯŽฮดฮนฮบฮฑ ฮบฮฑฮน ฯ„ฮฟฯ€ฮฟฮธฮตฯ„ฮฎฯƒฯ„ฮต ฯ„ฮฟ ฯƒฯ„ฮฟฮฝ ฮบฮฑฯ„ฮฌฮปฮฟฮณฮฟ ฮดฮฟฮบฮนฮผฮฎฯ‚.

    describe('Sample test', function() {
      it('Condition is true', function() {
        expect('AngularJS').toBe('AngularJS');
      });
    });

    ฮŸ ฯ€ฮฑฯฮฑฯ€ฮฌฮฝฯ‰ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฮญฯ‡ฮตฮน ฯ„ฮนฯ‚ ฮฑฮบฯŒฮปฮฟฯ…ฮธฮตฯ‚ ฯ€ฯ„ฯ…ฯ‡ฮญฯ‚

    1. ฮ— ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฯ€ฮตฯฮนฮณฯฮฑฯ†ฮฎฯ‚ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฮฝฮฑ ฮดฯŽฯƒฮตฮน ฮผฮนฮฑ ฯ€ฮตฯฮนฮณฯฮฑฯ†ฮฎ ฯ„ฮทฯ‚ ฮดฮฟฮบฮนฮผฮฎฯ‚. ฮฃฯ„ฮทฮฝ ฯ€ฮตฯฮฏฯ€ฯ„ฯ‰ฯƒฮฎ ฮผฮฑฯ‚, ฮดฮฏฮฝฮฟฯ…ฮผฮต ฯ„ฮทฮฝ ฯ€ฮตฯฮนฮณฯฮฑฯ†ฮฎ ยซฮ”ฮตฮฏฮณฮผฮฑ ฮดฮฟฮบฮนฮผฮฎฯ‚ยป ฯƒฯ„ฮท ฮดฮฟฮบฮนฮผฮฎ ฮผฮฑฯ‚.
    2. ฮ— ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท 'it' ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฮฝฮฑ ฮดฯŽฯƒฮตฮน ฮญฮฝฮฑ ฯŒฮฝฮฟฮผฮฑ ฯƒฯ„ฮท ฮดฮฟฮบฮนฮผฮฎ. ฮฃฯ„ฮทฮฝ ฯ€ฮตฯฮฏฯ€ฯ„ฯ‰ฯƒฮฎ ฮผฮฑฯ‚, ฮดฮฏฮฝฮฟฯ…ฮผฮต ฯ„ฮฟ ฯŒฮฝฮฟฮผฮฑ ฯ„ฮทฯ‚ ฮดฮฟฮบฮนฮผฮฎฯ‚ ฮผฮฑฯ‚ ฯ‰ฯ‚ ยซฮ— ฯƒฯ…ฮฝฮธฮฎฮบฮท ฮตฮฏฮฝฮฑฮน ฮฑฮปฮทฮธฮฎฯ‚ยป. ฮคฮฟ ฯŒฮฝฮฟฮผฮฑ ฯ„ฮฟฯ… ฯ„ฮตฯƒฯ„ ฯ€ฯฮญฯ€ฮตฮน ฮฝฮฑ ฮญฯ‡ฮตฮน ฮฝฯŒฮทฮผฮฑ.
    3. ฮŸ ฯƒฯ…ฮฝฮดฯ…ฮฑฯƒฮผฯŒฯ‚ ฯ„ฯ‰ฮฝ ฮปฮญฮพฮตฯ‰ฮฝ-ฮบฮปฮตฮนฮดฮนฯŽฮฝ ยซฮฑฮฝฮฑฮผฮญฮฝฮตฯ„ฮฑฮนยป ฮบฮฑฮน ยซฮฝฮฑ ฮตฮฏฮฝฮฑฮนยป ฮดฮทฮปฯŽฮฝฮตฮน ฯ€ฮฟฮนฮฑ ฮตฮฏฮฝฮฑฮน ฮท ฮฑฮฝฮฑฮผฮตฮฝฯŒฮผฮตฮฝฮท ฮบฮฑฮน ฯ€ฯฮฑฮณฮผฮฑฯ„ฮนฮบฮฎ ฯ„ฮนฮผฮฎ ฯ„ฮฟฯ… ฮฑฯ€ฮฟฯ„ฮตฮปฮญฯƒฮผฮฑฯ„ฮฟฯ‚ ฯ„ฮทฯ‚ ฮดฮฟฮบฮนฮผฮฎฯ‚. ฮ•ฮฌฮฝ ฮท ฯ€ฯฮฑฮณฮผฮฑฯ„ฮนฮบฮฎ ฮบฮฑฮน ฮท ฮฑฮฝฮฑฮผฮตฮฝฯŒฮผฮตฮฝฮท ฯ„ฮนฮผฮฎ ฮตฮฏฮฝฮฑฮน ฮท ฮฏฮดฮนฮฑ, ฯ„ฯŒฯ„ฮต ฮท ฮดฮฟฮบฮนฮผฮฎ ฮธฮฑ ฯ€ฮตฯฮฌฯƒฮตฮน, ฮดฮนฮฑฯ†ฮฟฯฮตฯ„ฮนฮบฮฌ ฮธฮฑ ฮฑฯ€ฮฟฯ„ฯฯ‡ฮตฮน.

    ฮŒฯ„ฮฑฮฝ ฮตฮบฯ„ฮตฮปฮญฯƒฮตฯ„ฮต ฯ„ฮทฮฝ ฮฑฮบฯŒฮปฮฟฯ…ฮธฮท ฮณฯฮฑฮผฮผฮฎ ฯƒฯ„ฮท ฮณฯฮฑฮผฮผฮฎ ฮตฮฝฯ„ฮฟฮปฯŽฮฝ, ฮธฮฑ ฮตฮบฯ„ฮตฮปฮญฯƒฮตฮน ฯ„ฮฟ ฯ€ฮฑฯฮฑฯ€ฮฌฮฝฯ‰ ฮฑฯฯ‡ฮตฮฏฮฟ ฮดฮฟฮบฮนฮผฮฎฯ‚

    KARMA start

    ฮ— ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฮญฮพฮฟฮดฮฟฯ‚ ฮปฮฑฮผฮฒฮฌฮฝฮตฯ„ฮฑฮน ฮฑฯ€ฯŒ ฯ„ฮฟ IDE Webstorm ฯƒฯ„ฮฟ ฮฟฯ€ฮฟฮฏฮฟ ฯ€ฯฮฑฮณฮผฮฑฯ„ฮฟฯ€ฮฟฮนฮฎฮธฮทฮบฮฑฮฝ ฯ„ฮฑ ฯ€ฮฑฯฮฑฯ€ฮฌฮฝฯ‰ ฮฒฮฎฮผฮฑฯ„ฮฑ.

    ฮ”ฮนฮฑฮผฯŒฯฯ†ฯ‰ฯƒฮท ฯ„ฮฟฯ… ฯ€ฮปฮฑฮนฯƒฮฏฮฟฯ… ฮšฮฌฯฮผฮฑ

    1. ฮ— ฮญฮพฮฟฮดฮฟฯ‚ ฮญฯฯ‡ฮตฯ„ฮฑฮน ฯƒฯ„ฮฟฮฝ ฮตฮพฮตฯฮตฯ…ฮฝฮทฯ„ฮฎ ฮšฮฌฯฮผฮฑ ฮผฮญฯƒฮฑ Webstorm. ฮ‘ฯ…ฯ„ฯŒ ฯ„ฮฟ ฯ€ฮฑฯฮฌฮธฯ…ฯฮฟ ฮดฮตฮฏฯ‡ฮฝฮตฮน ฯ„ฮทฮฝ ฮตฮบฯ„ฮญฮปฮตฯƒฮท ฯŒฮปฯ‰ฮฝ ฯ„ฯ‰ฮฝ ฮดฮฟฮบฮนฮผฯŽฮฝ ฯ€ฮฟฯ… ฮฟฯฮฏฮถฮฟฮฝฯ„ฮฑฮน ฯƒฯ„ฮฟ ฯ€ฮปฮฑฮฏฯƒฮนฮฟ ฯ„ฮฟฯ… ฮบฮฌฯฮผฮฑ.
    2. ฮ•ฮดฯŽ ฮผฯ€ฮฟฯฮตฮฏฯ„ฮต ฮฝฮฑ ฮดฮตฮฏฯ„ฮต ฯŒฯ„ฮน ฮตฮผฯ†ฮฑฮฝฮฏฮถฮตฯ„ฮฑฮน ฮท ฯ€ฮตฯฮนฮณฯฮฑฯ†ฮฎ ฯ„ฮทฯ‚ ฮดฮฟฮบฮนฮผฮฎฯ‚ ฯ€ฮฟฯ… ฮตฮบฯ„ฮตฮปฮญฯƒฯ„ฮทฮบฮต ฮท ฮฟฯ€ฮฟฮฏฮฑ ฮตฮฏฮฝฮฑฮน "ฮ”ฮตฮฏฮณฮผฮฑ ฮดฮฟฮบฮนฮผฮฎฯ‚".
    3. ฮฃฯ„ฮท ฯƒฯ…ฮฝฮญฯ‡ฮตฮนฮฑ, ฮผฯ€ฮฟฯฮตฮฏฯ„ฮต ฮฝฮฑ ฮดฮตฮฏฯ„ฮต ฯŒฯ„ฮน ฮตฮบฯ„ฮตฮปฮตฮฏฯ„ฮฑฮน ฮท ฮฏฮดฮนฮฑ ฮท ฮดฮฟฮบฮนฮผฮฎ ฯ€ฮฟฯ… ฮญฯ‡ฮตฮน ฯ„ฮฟ ฯŒฮฝฮฟฮผฮฑ "ฮŸ ฯŒฯฮฟฯ‚ ฮตฮฏฮฝฮฑฮน ฮฑฮปฮทฮธฮฎฯ‚".
    4. ฮฃฮทฮผฮตฮนฯŽฯƒฯ„ฮต ฯŒฯ„ฮน ฮตฯ€ฮตฮนฮดฮฎ ฯŒฮปฮตฯ‚ ฮฟฮน ฮดฮฟฮบฮนฮผฮญฯ‚ ฮญฯ‡ฮฟฯ…ฮฝ ฯ„ฮฟ ฯ€ฯฮฌฯƒฮนฮฝฮฟ ฮตฮนฮบฮฟฮฝฮฏฮดฮนฮฟ "Ok" ฮดฮฏฯ€ฮปฮฑ ฯ€ฮฟฯ… ฯƒฯ…ฮผฮฒฮฟฮปฮฏฮถฮตฮน ฯŒฯ„ฮน ฯŒฮปฮฑ ฯ„ฮฑ ฯ„ฮตฯƒฯ„ ฯ€ฮญฯฮฑฯƒฮฑฮฝ.

    ฮ”ฮฟฮบฮนฮผฮฎ ฮตฮปฮตฮณฮบฯ„ฯŽฮฝ AngularJS

    ฮคฮฟ ฯ€ฮปฮฑฮฏฯƒฮนฮฟ ฮดฮฟฮบฮนฮผฯŽฮฝ ฮบฮฌฯฮผฮฑ ฮญฯ‡ฮตฮน ฮตฯ€ฮฏฯƒฮทฯ‚ ฯ„ฮท ฮดฯ…ฮฝฮฑฯ„ฯŒฯ„ฮทฯ„ฮฑ ฮฝฮฑ ฮดฮฟฮบฮนฮผฮฌฮถฮตฮน ฮ•ฮปฮตฮณฮบฯ„ฮญฯ‚ ฮฑฯ€ฯŒ ฮฌฮบฯฮท ฯƒฮต ฮฌฮบฯฮท. ฮ‘ฯ…ฯ„ฯŒ ฯ€ฮตฯฮนฮปฮฑฮผฮฒฮฌฮฝฮตฮน ฯ„ฮท ฮดฮฟฮบฮนฮผฮฎ ฯ„ฮฟฯ… ฮฑฮฝฯ„ฮนฮบฮตฮนฮผฮญฮฝฮฟฯ… $scope ฯ€ฮฟฯ… ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฯƒฯ„ฮฟฯ…ฯ‚ ฮตฮปฮตฮณฮบฯ„ฮญฯ‚.

    ฮ‘ฯ‚ ฮดฮฟฯฮผฮต ฮญฮฝฮฑ ฯ€ฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ ฮณฮนฮฑ ฯ„ฮฟ ฯ€ฯŽฯ‚ ฮผฯ€ฮฟฯฮฟฯฮผฮต ฮฝฮฑ ฯ„ฮฟ ฯ€ฮตฯ„ฯฯ‡ฮฟฯ…ฮผฮต ฮฑฯ…ฯ„ฯŒ.

    ฮฃฯ„ฮฟ ฯ€ฮฑฯฮฌฮดฮตฮนฮณฮผฮฌ ฮผฮฑฯ‚,

    ฮ ฯฯŽฯ„ฮฑ ฮธฮฑ ฯ€ฯฮญฯ€ฮตฮน ฮฝฮฑ ฮฟฯฮฏฯƒฮฟฯ…ฮผฮต ฮญฮฝฮฑฮฝ ฮตฮปฮตฮณฮบฯ„ฮฎ. ฮ‘ฯ…ฯ„ฯŒฯ‚ ฮฟ ฮตฮปฮตฮณฮบฯ„ฮฎฯ‚ ฮธฮฑ ฮตฮบฯ„ฮตฮปฮฟฯฯƒฮต ฯ„ฮฑ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฮฒฮฎฮผฮฑฯ„ฮฑ

    1. ฮ”ฮทฮผฮนฮฟฯ…ฯฮณฮฎฯƒฯ„ฮต ฮผฮนฮฑ ฮผฮตฯ„ฮฑฮฒฮปฮทฯ„ฮฎ ID ฮบฮฑฮน ฮตฮบฯ‡ฯ‰ฯฮฎฯƒฯ„ฮต ฯ„ฮทฮฝ ฯ„ฮนฮผฮฎ 5 ฯƒฮต ฮฑฯ…ฯ„ฮฎฮฝ.
    2. ฮ‘ฮฝฯ„ฮนฯƒฯ„ฮฟฮนฯ‡ฮฏฯƒฯ„ฮต ฯ„ฮท ฮผฮตฯ„ฮฑฮฒฮปฮทฯ„ฮฎ ID ฯƒฯ„ฮฟ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ $scope.

    ฮ— ฮดฮฟฮบฮนฮผฮฎ ฮผฮฑฯ‚ ฮธฮฑ ฮตฮปฮญฮณฮพฮตฮน ฯ„ฮทฮฝ ฯฯ€ฮฑฯฮพฮท ฮฑฯ…ฯ„ฮฟฯ ฯ„ฮฟฯ… ฮตฮปฮตฮณฮบฯ„ฮฎ ฮบฮฑฮน ฮตฯ€ฮฏฯƒฮทฯ‚ ฮธฮฑ ฮตฮปฮญฮณฮพฮตฮน ฮตฮฌฮฝ ฮท ฮผฮตฯ„ฮฑฮฒฮปฮทฯ„ฮฎ ID ฯ„ฮฟฯ… ฮฑฮฝฯ„ฮนฮบฮตฮนฮผฮญฮฝฮฟฯ… $scope ฮญฯ‡ฮตฮน ฮฟฯฮนฯƒฯ„ฮตฮฏ ฯƒฮต 5.

    ฮ ฯฯŽฯ„ฮฑ ฯ€ฯฮญฯ€ฮตฮน ฮฝฮฑ ฮดฮนฮฑฯƒฯ†ฮฑฮปฮฏฯƒฮฟฯ…ฮผฮต ฯŒฯ„ฮน ฯ…ฯ€ฮฌฯฯ‡ฮตฮน ฮท ฮฑฮบฯŒฮปฮฟฯ…ฮธฮท ฯ€ฯฮฟฯ‹ฯ€ฯŒฮธฮตฯƒฮท

    ฮ•ฮณฮบฮฑฯ„ฮฑฯƒฯ„ฮฎฯƒฯ„ฮต ฯ„ฮท ฮฒฮนฮฒฮปฮนฮฟฮธฮฎฮบฮท Angular.JS-mocks ฮผฮญฯƒฯ‰ npm. ฮ‘ฯ…ฯ„ฯŒ ฮผฯ€ฮฟฯฮตฮฏ ฮฝฮฑ ฮณฮฏฮฝฮตฮน ฮตฮบฯ„ฮตฮปฯŽฮฝฯ„ฮฑฯ‚ ฯ„ฮทฮฝ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฮณฯฮฑฮผฮผฮฎ ฯƒฯ„ฮท ฮณฯฮฑฮผฮผฮฎ ฮตฮฝฯ„ฮฟฮปฯŽฮฝ

    npm install Angular JS-mocks

    ฮฃฯ„ฮท ฯƒฯ…ฮฝฮญฯ‡ฮตฮนฮฑ, ฯ€ฯฮญฯ€ฮตฮน ฮฝฮฑ ฯ„ฯฮฟฯ€ฮฟฯ€ฮฟฮนฮฎฯƒฮตฯ„ฮต ฯ„ฮฟ ฮฑฯฯ‡ฮตฮฏฮฟ karma.conf.js ฮณฮนฮฑ ฮฝฮฑ ฮดฮนฮฑฯƒฯ†ฮฑฮปฮฏฯƒฮตฯ„ฮต ฯŒฯ„ฮน ฯ€ฮตฯฮนฮปฮฑฮผฮฒฮฌฮฝฮฟฮฝฯ„ฮฑฮน ฯ„ฮฑ ฯƒฯ‰ฯƒฯ„ฮฌ ฮฑฯฯ‡ฮตฮฏฮฑ ฮณฮนฮฑ ฯ„ฮท ฮดฮฟฮบฮนฮผฮฎ. ฮคฮฟ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฯ„ฮผฮฎฮผฮฑ ฮดฮตฮฏฯ‡ฮฝฮตฮน ฮฑฯ€ฮปฯŽฯ‚ ฯ„ฮฟ ฯ„ฮผฮฎฮผฮฑ ฮฑฯฯ‡ฮตฮฏฯ‰ฮฝ ฯ„ฮฟฯ… karma.conf.js ฯ€ฮฟฯ… ฯ€ฯฮญฯ€ฮตฮน ฮฝฮฑ ฯ„ฯฮฟฯ€ฮฟฯ€ฮฟฮนฮทฮธฮตฮฏ

    files: ['lib/AngularJS.js','lib/AngularJS-mocks.js','lib/index.js','test/*.js']
    • ฮ— ฯ€ฮฑฯฮฌฮผฮตฯ„ฯฮฟฯ‚ 'ฮฑฯฯ‡ฮตฮฏฮฑ' ฮปฮญฮตฮน ฮฒฮฑฯƒฮนฮบฮฌ ฯƒฯ„ฮฟ Karma ฯŒฮปฮฑ ฯ„ฮฑ ฮฑฯฯ‡ฮตฮฏฮฑ ฯ€ฮฟฯ… ฮฑฯ€ฮฑฮนฯ„ฮฟฯฮฝฯ„ฮฑฮน ฮณฮนฮฑ ฯ„ฮทฮฝ ฮตฮบฯ„ฮญฮปฮตฯƒฮท ฯ„ฯ‰ฮฝ ฮดฮฟฮบฮนฮผฯŽฮฝ.
    • ฮคฮฟ ฮฑฯฯ‡ฮตฮฏฮฟ AngularJS.js ฮบฮฑฮน AngularJS-mocks.js ฮฑฯ€ฮฑฮนฯ„ฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฯ„ฮทฮฝ ฮตฮบฯ„ฮญฮปฮตฯƒฮท ฮดฮฟฮบฮนฮผฯŽฮฝ ฮผฮฟฮฝฮฌฮดฮฑฯ‚ AngularJS
    • ฮคฮฟ ฮฑฯฯ‡ฮตฮฏฮฟ index.js ฮธฮฑ ฯ€ฮตฯฮนฮญฯ‡ฮตฮน ฯ„ฮฟฮฝ ฮบฯŽฮดฮนฮบฮฌ ฮผฮฑฯ‚ ฮณฮนฮฑ ฯ„ฮฟฮฝ ฮตฮปฮตฮณฮบฯ„ฮฎ
    • ฮŸ ฯ†ฮฌฮบฮตฮปฮฟฯ‚ ฮดฮฟฮบฮนฮผฮฎฯ‚ ฮธฮฑ ฯ€ฮตฯฮนฮญฯ‡ฮตฮน ฯŒฮปฮตฯ‚ ฯ„ฮนฯ‚ ฮดฮฟฮบฮนฮผฮญฯ‚ AngularJS ฮผฮฑฯ‚

    ฮ ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฮตฮฏฮฝฮฑฮน ฮฟ ฮบฯŽฮดฮนฮบฮฑฯ‚ Angular.JS ฯ€ฮฟฯ… ฮธฮฑ ฮฑฯ€ฮฟฮธฮทฮบฮตฯ…ฯ„ฮตฮฏ ฯ‰ฯ‚ ฮฑฯฯ‡ฮตฮฏฮฟ Index.js ฯƒฯ„ฮฟฮฝ ฮดฮฟฮบฮนฮผฮฑฯƒฯ„ฮนฮบฯŒ ฯ†ฮฌฮบฮตฮปฮฟ ฯ„ฮทฯ‚ ฮตฯ†ฮฑฯฮผฮฟฮณฮฎฯ‚ ฮผฮฑฯ‚.

    ฮŸ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฮบฮฌฮฝฮตฮน ฮฑฯ€ฮปฯŽฯ‚ ฯ„ฮฑ ฮฑฮบฯŒฮปฮฟฯ…ฮธฮฑ ฯ€ฯฮฌฮณฮผฮฑฯ„ฮฑ

    1. ฮ”ฮทฮผฮนฮฟฯ…ฯฮณฮฏฮฑ ฮตฮฝฯŒฯ‚ ฮœฮฟฮฝฮฌฮดฮฑ AngularJS ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน sampleApp
    2. ฮ”ฮทฮผฮนฮฟฯ…ฯฮณฮฎฯƒฯ„ฮต ฮญฮฝฮฑฮฝ ฮตฮปฮตฮณฮบฯ„ฮฎ ฯ€ฮฟฯ… ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน AngularJSController
    3. ฮ”ฮทฮผฮนฮฟฯ…ฯฮณฮฎฯƒฯ„ฮต ฮผฮนฮฑ ฮผฮตฯ„ฮฑฮฒฮปฮทฯ„ฮฎ ฯ€ฮฟฯ… ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน ID, ฮดฯŽฯƒฯ„ฮต ฯ„ฮทฯ‚ ฮผฮนฮฑ ฯ„ฮนฮผฮฎ 5 ฮบฮฑฮน ฮฑฮฝฯ„ฮนฯƒฯ„ฮฟฮนฯ‡ฮฏฯƒฯ„ฮต ฯ„ฮทฮฝ ฯƒฯ„ฮฟ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ $scope
    var sampleApp = AngularJS.module('sampleApp',[]);
    sampleApp.controller('AngularJSController', function($scope) {
        $scope.ID =5;
    });

    ฮœฯŒฮปฮนฯ‚ ฮฟ ฯ€ฮฑฯฮฑฯ€ฮฌฮฝฯ‰ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฮตฮบฯ„ฮตฮปฮตฯƒฯ„ฮตฮฏ ฮผฮต ฮตฯ€ฮนฯ„ฯ…ฯ‡ฮฏฮฑ, ฯ„ฮฟ ฮตฯ€ฯŒฮผฮตฮฝฮฟ ฮฒฮฎฮผฮฑ ฮธฮฑ ฮฎฯ„ฮฑฮฝ ฮฝฮฑ ฮดฮทฮผฮนฮฟฯ…ฯฮณฮฎฯƒฮตฯ„ฮต ฮญฮฝฮฑ ฮ”ฮฟฮบฮนฮผฮฑฯƒฯ„ฮนฮบฮฎ ฮธฮฎฮบฮท ฮณฮนฮฑ ฮฝฮฑ ฮฒฮตฮฒฮฑฮนฯ‰ฮธฮตฮฏฯ„ฮต ฯŒฯ„ฮน ฮฟ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฮญฯ‡ฮตฮน ฮณฯฮฑฯ†ฯ„ฮตฮฏ ฮบฮฑฮน ฮตฮบฯ„ฮตฮปฮตฯƒฯ„ฮตฮฏ ฯƒฯ‰ฯƒฯ„ฮฌ.

    ฮŸ ฮบฯ‰ฮดฮนฮบฯŒฯ‚ ฮณฮนฮฑ ฯ„ฮท ฮดฮฟฮบฮนฮผฮฎ ฮผฮฑฯ‚ ฮธฮฑ ฮตฮฏฮฝฮฑฮน ฯŒฯ€ฯ‰ฯ‚ ฯ†ฮฑฮฏฮฝฮตฯ„ฮฑฮน ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰.

    ฮŸ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฮธฮฑ ฮฒฯฮฏฯƒฮบฮตฯ„ฮฑฮน ฯƒฮต ฮญฮฝฮฑ ฮพฮตฯ‡ฯ‰ฯฮนฯƒฯ„ฯŒ ฮฑฯฯ‡ฮตฮฏฮฟ ฯ€ฮฟฯ… ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน ControllerTest.js, ฯ„ฮฟ ฮฟฯ€ฮฟฮฏฮฟ ฮธฮฑ ฯ„ฮฟฯ€ฮฟฮธฮตฯ„ฮทฮธฮตฮฏ ฯƒฯ„ฮฟฮฝ ฯ†ฮฌฮบฮตฮปฮฟ ฮดฮฟฮบฮนฮผฮฎฯ‚. ฮŸ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฮบฮฌฮฝฮตฮน ฮฑฯ€ฮปฯŽฯ‚ ฯ„ฮฑ ฮฑฮบฯŒฮปฮฟฯ…ฮธฮฑ ฮฒฮฑฯƒฮนฮบฮฌ ฯ€ฯฮฌฮณฮผฮฑฯ„ฮฑ

    1. ฮ ฯฮนฮฝ ฮฑฯ€ฯŒ ฮบฮฌฮธฮต ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท โ€“ ฮ‘ฯ…ฯ„ฮฎ ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฯ„ฮท ฯ†ฯŒฯฯ„ฯ‰ฯƒฮท ฯ„ฮทฯ‚ ฮปฮตฮนฯ„ฮฟฯ…ฯฮณฮนฮบฮฎฯ‚ ฮผฮฟฮฝฮฌฮดฮฑฯ‚ AngularJS.JS ฯ€ฮฟฯ… ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน ยซsampleAppยป ฯ€ฯฮนฮฝ ฮฑฯ€ฯŒ ฯ„ฮท ฮดฮฟฮบฮนฮผฮฑฯƒฯ„ฮนฮบฮฎ ฮตฮบฯ„ฮญฮปฮตฯƒฮท. ฮฃฮทฮผฮตฮนฯŽฯƒฯ„ฮต ฯŒฯ„ฮน ฮฑฯ…ฯ„ฯŒ ฮตฮฏฮฝฮฑฮน ฯ„ฮฟ ฯŒฮฝฮฟฮผฮฑ ฯ„ฮทฯ‚ ฮปฮตฮนฯ„ฮฟฯ…ฯฮณฮนฮบฮฎฯ‚ ฮผฮฟฮฝฮฌฮดฮฑฯ‚ ฯƒฮต ฮญฮฝฮฑ ฮฑฯฯ‡ฮตฮฏฮฟ index.js.
    2. ฮคฮฟ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ $controller ฮดฮทฮผฮนฮฟฯ…ฯฮณฮตฮฏฯ„ฮฑฮน ฯ‰ฯ‚ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ ฮผฮฑฮบฮญฯ„ฮฑฯ‚ ฮณฮนฮฑ ฯ„ฮฟฮฝ ฮตฮปฮตฮณฮบฯ„ฮฎ "Angular JSController" ฯ€ฮฟฯ… ฮฟฯฮฏฮถฮตฯ„ฮฑฮน ฯƒฯ„ฮฟ ฮฑฯฯ‡ฮตฮฏฮฟ ฮผฮฑฯ‚ index.js. ฮฃฮต ฮบฮฌฮธฮต ฮตฮฏฮดฮฟฯ…ฯ‚ ฮดฮฟฮบฮนฮผฮฎ ฮผฮฟฮฝฮฌฮดฮฑฯ‚, ฮญฮฝฮฑ ฮตฮนฮบฮฟฮฝฮนฮบฯŒ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ ฮฑฮฝฯ„ฮนฯ€ฯฮฟฯƒฯ‰ฯ€ฮตฯฮตฮน ฮญฮฝฮฑ ฮตฮนฮบฮฟฮฝฮนฮบฯŒ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ ฯ„ฮฟ ฮฟฯ€ฮฟฮฏฮฟ ฮธฮฑ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮทฮธฮตฮฏ ฯ€ฯฮฑฮณฮผฮฑฯ„ฮนฮบฮฌ ฮณฮนฮฑ ฯ„ฮท ฮดฮฟฮบฮนฮผฮฎ. ฮ‘ฯ…ฯ„ฯŒ ฯ„ฮฟ ฮตฮนฮบฮฟฮฝฮนฮบฯŒ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ ฮธฮฑ ฯ€ฯฮฟฯƒฮฟฮผฮฟฮนฯŽฯƒฮตฮน ฯ€ฯฮฑฮณฮผฮฑฯ„ฮนฮบฮฌ ฯ„ฮท ฯƒฯ…ฮผฯ€ฮตฯฮนฯ†ฮฟฯฮฌ ฯ„ฮฟฯ… ฮตฮปฮตฮณฮบฯ„ฮฎ ฮผฮฑฯ‚.
    3. BeforeEach(inject(function(_$controller_)) โ€“ ฮงฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฯ„ฮทฮฝ ฮญฮณฯ‡ฯ…ฯƒฮท ฯ„ฮฟฯ… ฮตฮนฮบฮฟฮฝฮนฮบฮฟฯ ฮฑฮฝฯ„ฮนฮบฮตฮนฮผฮญฮฝฮฟฯ… ฯƒฯ„ฮท ฮดฮฟฮบฮนฮผฮฎ ฮผฮฑฯ‚, ฮญฯ„ฯƒฮน ฯŽฯƒฯ„ฮต ฮฝฮฑ ฯƒฯ…ฮผฯ€ฮตฯฮนฯ†ฮญฯฮตฯ„ฮฑฮน ฯŒฯ€ฯ‰ฯ‚ ฮฟ ฯ€ฯฮฑฮณฮผฮฑฯ„ฮนฮบฯŒฯ‚ ฮตฮปฮตฮณฮบฯ„ฮฎฯ‚.
    4. var $scope = {}; ฮ‘ฯ…ฯ„ฯŒ ฮตฮฏฮฝฮฑฮน ฮญฮฝฮฑ ฮตฮนฮบฮฟฮฝฮนฮบฯŒ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ ฯ€ฮฟฯ… ฮดฮทฮผฮนฮฟฯ…ฯฮณฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฯ„ฮฟ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ $scope.
    5. var controller = $controller('AngularJSController', { $scope: $scope }); โ€“ ฮ•ฮดฯŽ ฮตฮปฮญฮณฯ‡ฮฟฯ…ฮผฮต ฮณฮนฮฑ ฯ„ฮทฮฝ ฯฯ€ฮฑฯฮพฮท ฮตฮฝฯŒฯ‚ ฮตฮปฮตฮณฮบฯ„ฮฎ ฮผฮต ฯ„ฮฟ ฯŒฮฝฮฟฮผฮฑ 'Angular.JSController'. ฮ•ฮดฯŽ ฮตฮบฯ‡ฯ‰ฯฮฟฯฮผฮต ฮตฯ€ฮฏฯƒฮทฯ‚ ฯŒฮปฮตฯ‚ ฯ„ฮนฯ‚ ฮผฮตฯ„ฮฑฮฒฮปฮทฯ„ฮญฯ‚ ฮฑฯ€ฯŒ ฯ„ฮฟ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ $scope ฯƒฯ„ฮฟฮฝ ฮตฮปฮตฮณฮบฯ„ฮฎ ฮผฮฑฯ‚ ฯƒฯ„ฮฟ ฮฑฯฯ‡ฮตฮฏฮฟ Index.js ฯƒฯ„ฮฟ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ $scope ฯƒฯ„ฮฟ ฮฑฯฯ‡ฮตฮฏฮฟ ฮดฮฟฮบฮนฮผฮฎฯ‚ ฮผฮฑฯ‚
    6. ฮคฮญฮปฮฟฯ‚, ฯƒฯ…ฮณฮบฯฮฏฮฝฮฟฯ…ฮผฮต ฯ„ฮฟ $scope.ID ฮผฮต ฯ„ฮฟ 5
    describe('AngularJSController', function() {
        beforeEach(module('sampleApp'));
    
        var $controller;
    
        beforeEach(inject(function(_$controller_){
                  $controller = _$controller_;
        }));
    
        describe('$scope.ID', function() {
            it('Check the scope object', function() {
                var $scope = {};
                var controller = $controller('AngularJSController', { $scope: $scope });
                expect($scope.ID).toEqual(5);
            });
        });
    });

    ฮคฮฟ ฯ€ฮฑฯฮฑฯ€ฮฌฮฝฯ‰ ฯ„ฮตฯƒฯ„ ฮธฮฑ ฮตฮบฯ„ฮตฮปฮตฯƒฯ„ฮตฮฏ ฯƒฯ„ฮฟ ฯ€ฯฯŒฮณฯฮฑฮผฮผฮฑ ฯ€ฮตฯฮนฮฎฮณฮทฯƒฮทฯ‚ karma ฮบฮฑฮน ฮธฮฑ ฮดฯŽฯƒฮตฮน ฯ„ฮฟ ฮฏฮดฮนฮฟ ฮฑฯ€ฮฟฯ„ฮญฮปฮตฯƒฮผฮฑ ฮตฯ€ฮนฯ„ฯ…ฯ‡ฮฏฮฑฯ‚ ฯŒฯ€ฯ‰ฯ‚ ฯ€ฮฑฯฮฟฯ…ฯƒฮนฮฌฯƒฯ„ฮทฮบฮต ฯƒฯ„ฮฟ ฯ€ฯฮฟฮทฮณฮฟฯฮผฮตฮฝฮฟ ฮธฮญฮผฮฑ.

    ฮ”ฮฟฮบฮนฮผฮฎ ฮŸฮดฮทฮณฮนฯŽฮฝ AngularJS

    ฮคฮฟ ฯ€ฮปฮฑฮฏฯƒฮนฮฟ ฮดฮฟฮบฮนฮผฯŽฮฝ ฮบฮฌฯฮผฮฑ ฮญฯ‡ฮตฮน ฮตฯ€ฮฏฯƒฮทฯ‚ ฯ„ฮท ฮดฯ…ฮฝฮฑฯ„ฯŒฯ„ฮทฯ„ฮฑ ฮฝฮฑ ฮดฮฟฮบฮนฮผฮฌฮถฮตฮน ฯ€ฯฮฟฯƒฮฑฯฮผฮฟฯƒฮผฮญฮฝฮตฯ‚ ฮฟฮดฮทฮณฮฏฮตฯ‚. ฮ‘ฯ…ฯ„ฯŒ ฯ€ฮตฯฮนฮปฮฑฮผฮฒฮฌฮฝฮตฮน ฯ„ฮฑ templateURL ฯ€ฮฟฯ… ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮฟฯฮฝฯ„ฮฑฮน ฯƒฮต ฯ€ฯฮฟฯƒฮฑฯฮผฮฟฯƒฮผฮญฮฝฮตฯ‚ ฮฟฮดฮทฮณฮฏฮตฯ‚.

    ฮ‘ฯ‚ ฮดฮฟฯฮผฮต ฮญฮฝฮฑ ฯ€ฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ ฮณฮนฮฑ ฯ„ฮฟ ฯ€ฯŽฯ‚ ฮผฯ€ฮฟฯฮฟฯฮผฮต ฮฝฮฑ ฯ„ฮฟ ฯ€ฮตฯ„ฯฯ‡ฮฟฯ…ฮผฮต ฮฑฯ…ฯ„ฯŒ.

    ฮฃฯ„ฮฟ ฯ€ฮฑฯฮฌฮดฮตฮนฮณฮผฮฌ ฮผฮฑฯ‚, ฮธฮฑ ฮฟฯฮฏฯƒฮฟฯ…ฮผฮต ฯ€ฯฯŽฯ„ฮฑ ฮผฮนฮฑ ฯ€ฯฮฟฯƒฮฑฯฮผฮฟฯƒฮผฮญฮฝฮท ฮฟฮดฮทฮณฮฏฮฑ ฯ€ฮฟฯ… ฮบฮฌฮฝฮตฮน ฯ„ฮฑ ฮฑฮบฯŒฮปฮฟฯ…ฮธฮฑ ฯ€ฯฮฌฮณฮผฮฑฯ„ฮฑ

    1. ฮ”ฮทฮผฮนฮฟฯ…ฯฮณฮฎฯƒฯ„ฮต ฮผฮนฮฑ ฮปฮตฮนฯ„ฮฟฯ…ฯฮณฮนฮบฮฎ ฮผฮฟฮฝฮฌฮดฮฑ AngularJS ฯ€ฮฟฯ… ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน sampleApp
    2. ฮ”ฮทฮผฮนฮฟฯ…ฯฮณฮฎฯƒฯ„ฮต ฮผฮนฮฑ ฯ€ฯฮฟฯƒฮฑฯฮผฮฟฯƒฮผฮญฮฝฮท ฮฟฮดฮทฮณฮฏฮฑ ฮผฮต ฯ„ฮฟ ฯŒฮฝฮฟฮผฮฑ โ€“ Guru99
    3. ฮ”ฮทฮผฮนฮฟฯ…ฯฮณฮฎฯƒฯ„ฮต ฮผฮนฮฑ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฯ€ฮฟฯ… ฮตฯ€ฮนฯƒฯ„ฯฮญฯ†ฮตฮน ฮญฮฝฮฑ ฯ€ฯฯŒฯ„ฯ…ฯ€ฮฟ ฮผฮต ฮผฮนฮฑ ฮตฯ„ฮนฮบฮญฯ„ฮฑ ฮบฮตฯ†ฮฑฮปฮฏฮดฮฑฯ‚ ฯ€ฮฟฯ… ฮตฮผฯ†ฮฑฮฝฮฏฮถฮตฮน ฯ„ฮฟ ฮบฮตฮฏฮผฮตฮฝฮฟ "This is AngularJS Testing".
    var sampleApp = AngularJS.module('sampleApp',[]);
    sampleApp.directive('Guru99', function () {
        return {
            restrict: 'E',
            replace: true,
            template: '<h1>This is AngularJS Testing</h1>'
        };
    });

    ฮœฯŒฮปฮนฯ‚ ฮฟ ฯ€ฮฑฯฮฑฯ€ฮฌฮฝฯ‰ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฮตฮบฯ„ฮตฮปฮตฯƒฯ„ฮตฮฏ ฮผฮต ฮตฯ€ฮนฯ„ฯ…ฯ‡ฮฏฮฑ, ฯ„ฮฟ ฮตฯ€ฯŒฮผฮตฮฝฮฟ ฮฒฮฎฮผฮฑ ฮธฮฑ ฮฎฯ„ฮฑฮฝ ฮฝฮฑ ฮดฮทฮผฮนฮฟฯ…ฯฮณฮฎฯƒฮตฯ„ฮต ฮผฮนฮฑ ฮดฮฟฮบฮนฮผฮฑฯƒฯ„ฮนฮบฮฎ ฯ€ฮตฯฮฏฯ€ฯ„ฯ‰ฯƒฮท ฮณฮนฮฑ ฮฝฮฑ ฮดฮนฮฑฯƒฯ†ฮฑฮปฮฏฯƒฮตฯ„ฮต ฯŒฯ„ฮน ฮฟ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฮญฯ‡ฮตฮน ฮณฯฮฑฯ†ฯ„ฮตฮฏ ฮบฮฑฮน ฮตฮบฯ„ฮตฮปฮตฯƒฯ„ฮตฮฏ ฯƒฯ‰ฯƒฯ„ฮฌ. ฮŸ ฮบฯ‰ฮดฮนฮบฯŒฯ‚ ฮณฮนฮฑ ฯ„ฮท ฮดฮฟฮบฮนฮผฮฎ ฮผฮฑฯ‚ ฮธฮฑ ฮตฮฏฮฝฮฑฮน ฯŒฯ€ฯ‰ฯ‚ ฯ†ฮฑฮฏฮฝฮตฯ„ฮฑฮน ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰

    ฮŸ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฮธฮฑ ฮฒฯฮฏฯƒฮบฮตฯ„ฮฑฮน ฯƒฮต ฮญฮฝฮฑ ฮพฮตฯ‡ฯ‰ฯฮนฯƒฯ„ฯŒ ฮฑฯฯ‡ฮตฮฏฮฟ ฯ€ฮฟฯ… ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน DirectiveTest.js, ฯ„ฮฟ ฮฟฯ€ฮฟฮฏฮฟ ฮธฮฑ ฯ„ฮฟฯ€ฮฟฮธฮตฯ„ฮทฮธฮตฮฏ ฯƒฯ„ฮฟฮฝ ฯ†ฮฌฮบฮตฮปฮฟ ฮดฮฟฮบฮนฮผฮฎฯ‚. ฮŸ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฮบฮฌฮฝฮตฮน ฮฑฯ€ฮปฯŽฯ‚ ฯ„ฮฑ ฮฑฮบฯŒฮปฮฟฯ…ฮธฮฑ ฮฒฮฑฯƒฮนฮบฮฌ ฯ€ฯฮฌฮณฮผฮฑฯ„ฮฑ

    1. ฮ ฯฮนฮฝ ฮฑฯ€ฯŒ ฮบฮฌฮธฮต ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท โ€“ ฮ‘ฯ…ฯ„ฮฎ ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฯ„ฮท ฯ†ฯŒฯฯ„ฯ‰ฯƒฮท ฯ„ฮทฯ‚ ฮผฮฟฮฝฮฌฮดฮฑฯ‚ Angular JS ฯ€ฮฟฯ… ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน ยซsampleAppยป ฯ€ฯฮนฮฝ ฮฑฯ€ฯŒ ฯ„ฮท ฮดฮฟฮบฮนฮผฮฑฯƒฯ„ฮนฮบฮฎ ฮตฮบฯ„ฮญฮปฮตฯƒฮท.
    2. ฮ— ฯ…ฯ€ฮทฯฮตฯƒฮฏฮฑ $compile ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฯ„ฮท ฯƒฯฮฝฯ„ฮฑฮพฮท ฯ„ฮทฯ‚ ฮฟฮดฮทฮณฮฏฮฑฯ‚. ฮ‘ฯ…ฯ„ฮฎ ฮท ฯ…ฯ€ฮทฯฮตฯƒฮฏฮฑ ฮตฮฏฮฝฮฑฮน ฯ…ฯ€ฮฟฯ‡ฯฮตฯ‰ฯ„ฮนฮบฮฎ ฮบฮฑฮน ฯ€ฯฮญฯ€ฮตฮน ฮฝฮฑ ฮดฮทฮปฯ‰ฮธฮตฮฏ ฮญฯ„ฯƒฮน ฯŽฯƒฯ„ฮต ฯ„ฮฟ Angular.JS ฮฝฮฑ ฮผฯ€ฮฟฯฮตฮฏ ฮฝฮฑ ฯ„ฮท ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮฎฯƒฮตฮน ฮณฮนฮฑ ฮฝฮฑ ฯƒฯ…ฮฝฯ„ฮฌฮพฮตฮน ฯ„ฮทฮฝ ฯ€ฯฮฟฯƒฮฑฯฮผฮฟฯƒฮผฮญฮฝฮท ฮฟฮดฮทฮณฮฏฮฑ ฮผฮฑฯ‚.
    3. ฮคฮฟ $rootscope ฮตฮฏฮฝฮฑฮน ฯ„ฮฟ ฮบฯฯฮนฮฟ ฯ€ฮตฮดฮฏฮฟ ฮฟฯ€ฮฟฮนฮฑฯƒฮดฮฎฯ€ฮฟฯ„ฮต ฮตฯ†ฮฑฯฮผฮฟฮณฮฎฯ‚ AngularJS.JS. ฮˆฯ‡ฮฟฯ…ฮผฮต ฮดฮตฮน ฯ„ฮฟ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ $scope ฯ„ฮฟฯ… ฮตฮปฮตฮณฮบฯ„ฮฎ ฯƒฮต ฯ€ฯฮฟฮทฮณฮฟฯฮผฮตฮฝฮฑ ฮบฮตฯ†ฮฌฮปฮฑฮนฮฑ. ฮ›ฮฟฮนฯ€ฯŒฮฝ, ฯ„ฮฟ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ $scope ฮตฮฏฮฝฮฑฮน ฯ„ฮฟ ฮธฯ…ฮณฮฑฯ„ฯฮนฮบฯŒ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ ฯ„ฮฟฯ… ฮฑฮฝฯ„ฮนฮบฮตฮนฮผฮญฮฝฮฟฯ… $rootscope. ฮŸ ฮปฯŒฮณฮฟฯ‚ ฯ€ฮฟฯ… ฮดฮทฮปฯŽฮฝฮตฯ„ฮฑฮน ฮตฮดฯŽ ฮตฮฏฮฝฮฑฮน ฮตฯ€ฮตฮนฮดฮฎ ฮบฮฌฮฝฮฟฯ…ฮผฮต ฮผฮนฮฑ ฮฑฮปฮปฮฑฮณฮฎ ฯƒฮต ฮผฮนฮฑ ฯ€ฯฮฑฮณฮผฮฑฯ„ฮนฮบฮฎ ฮตฯ„ฮนฮบฮญฯ„ฮฑ HTML ฯƒฯ„ฮฟ DOM ฮผฮญฯƒฯ‰ ฯ„ฮทฯ‚ ฯ€ฯฮฟฯƒฮฑฯฮผฮฟฯƒฮผฮญฮฝฮทฯ‚ ฮผฮฑฯ‚ ฮฟฮดฮทฮณฮฏฮฑฯ‚. ฮฉฯ‚ ฮตฮบ ฯ„ฮฟฯฯ„ฮฟฯ…, ฯ€ฯฮญฯ€ฮตฮน ฮฝฮฑ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮฎฯƒฮฟฯ…ฮผฮต ฯ„ฮทฮฝ ฯ…ฯ€ฮทฯฮตฯƒฮฏฮฑ $rootscope ฮท ฮฟฯ€ฮฟฮฏฮฑ ฯ€ฯฮฑฮณฮผฮฑฯ„ฮนฮบฮฌ ฮฑฮบฮฟฯฮตฮน ฮฎ ฮณฮฝฯ‰ฯฮฏฮถฮตฮน ฯ€ฯŒฯ„ฮต ฯƒฯ…ฮผฮฒฮฑฮฏฮฝฮตฮน ฮฟฯ€ฮฟฮนฮฑฮดฮฎฯ€ฮฟฯ„ฮต ฮฑฮปฮปฮฑฮณฮฎ ฮผฮญฯƒฮฑ ฮฑฯ€ฯŒ ฮญฮฝฮฑ ฮญฮณฮณฯฮฑฯ†ฮฟ HTML.
    4. var ฯƒฯ„ฮฟฮนฯ‡ฮตฮฏฮฟ = $compile(" โ€) โ€“ ฮงฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฮฝฮฑ ฮตฮปฮญฮณฮพฮฟฯ…ฮผฮต ฮตฮฌฮฝ ฮท ฮฟฮดฮทฮณฮฏฮฑ ฮผฮฑฯ‚ ฮตฮณฯ‡ฮญฮตฯ„ฮฑฮน ฯŒฯ€ฯ‰ฯ‚ ฮธฮฑ ฮญฯ€ฯฮตฯ€ฮต. ฮคฮฟ ฯŒฮฝฮฟฮผฮฑ ฯ„ฮทฯ‚ ฯ€ฯฮฟฯƒฮฑฯฮผฮฟฯƒฮผฮญฮฝฮทฯ‚ ฮฟฮดฮทฮณฮฏฮฑฯ‚ ฮผฮฑฯ‚ ฮตฮฏฮฝฮฑฮน Guru99 ฮบฮฑฮน ฮณฮฝฯ‰ฯฮฏฮถฮฟฯ…ฮผฮต ฮฑฯ€ฯŒ ฯ„ฮฟ ฮบฮตฯ†ฮฌฮปฮฑฮนฮฟ ฯ€ฯฮฟฯƒฮฑฯฮผฮฟฯƒฮผฮญฮฝฯ‰ฮฝ ฮฟฮดฮทฮณฮนฯŽฮฝ ฮผฮฑฯ‚ ฯŒฯ„ฮน ฯŒฯ„ฮฑฮฝ ฮท ฮฟฮดฮทฮณฮฏฮฑ ฮตฮนฯƒฮฑฯ‡ฮธฮตฮฏ ฯƒฯ„ฮฟ HTML ฮผฮฑฯ‚, ฮธฮฑ ฮตฮณฯ‡ฯ…ฮธฮตฮฏ ฯ‰ฯ‚ " '. ฮฉฯ‚ ฮตฮบ ฯ„ฮฟฯฯ„ฮฟฯ…, ฮฑฯ…ฯ„ฮฎ ฮท ฮดฮฎฮปฯ‰ฯƒฮท ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฮฝฮฑ ฮณฮฏฮฝฮตฮน ฮฑฯ…ฯ„ฯŒฯ‚ ฮฟ ฮญฮปฮตฮณฯ‡ฮฟฯ‚.
    5. expect(element.html()).toContain("This is AngularJS Testing") โ€“ ฮงฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฮฝฮฑ ฮดฯŽฯƒฮตฮน ฮตฮฝฯ„ฮฟฮปฮฎ ฯƒฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท expect ฯŒฯ„ฮน ฯ€ฯฮญฯ€ฮตฮน ฮฝฮฑ ฮฒฯฮตฮน ฯ„ฮฟ ฯƒฯ„ฮฟฮนฯ‡ฮตฮฏฮฟ (ฯƒฯ„ฮทฮฝ ฯ€ฮตฯฮฏฯ€ฯ„ฯ‰ฯƒฮฎ ฮผฮฑฯ‚ ฯ„ฮทฮฝ ฮตฯ„ฮนฮบฮญฯ„ฮฑ div) ฮฝฮฑ ฯ€ฮตฯฮนฮญฯ‡ฮตฮน ฯ„ฮฟ ฮบฮตฮฏฮผฮตฮฝฮฟ innerHTML ฯ„ฮฟฯ… "This is AngularJS Testingโ€.
    describe('Unit testing directives', function() {
      var $compile,
          $rootScope;
       beforeEach(module('sampleApp'));
    
      beforeEach(inject(function(_$compile_, _$rootScope_){
        $compile = _$compile_;
        $rootScope = _$rootScope_;
     }));
    
     it('Check the directive', function() {
        // Compile a piece of HTML containing the directive
        var element = $compile("<ng-Guru99></ng-Guru99>")($rootScope);
        $rootScope.$digest();
        expect(element.html()).toContain("This is AngularJS Testing");
      });
    });

    ฮคฮฟ ฯ€ฮฑฯฮฑฯ€ฮฌฮฝฯ‰ ฯ„ฮตฯƒฯ„ ฮธฮฑ ฮตฮบฯ„ฮตฮปฮตฯƒฯ„ฮตฮฏ ฯƒฯ„ฮฟ ฯ€ฯฯŒฮณฯฮฑฮผฮผฮฑ ฯ€ฮตฯฮนฮฎฮณฮทฯƒฮทฯ‚ karma ฮบฮฑฮน ฮธฮฑ ฮดฯŽฯƒฮตฮน ฯ„ฮฟ ฮฏฮดฮนฮฟ ฮฑฯ€ฮฟฯ„ฮญฮปฮตฯƒฮผฮฑ ฮตฯ€ฮนฯ„ฯ…ฯ‡ฮฏฮฑฯ‚ ฯŒฯ€ฯ‰ฯ‚ ฯ€ฮฑฯฮฟฯ…ฯƒฮนฮฌฯƒฯ„ฮทฮบฮต ฯƒฯ„ฮฟ ฯ€ฯฮฟฮทฮณฮฟฯฮผฮตฮฝฮฟ ฮธฮญฮผฮฑ.

    ฮ”ฮฟฮบฮนฮผฮญฯ‚ ฮฑฯ€ฯŒ ฮฌฮบฯฮท ฯƒฮต ฮฌฮบฯฮท ฮตฯ†ฮฑฯฮผฮฟฮณฯŽฮฝ AngularJS JS

    ฮคฮฟ ฯ€ฮปฮฑฮฏฯƒฮนฮฟ ฮดฮฟฮบฮนฮผฯŽฮฝ ฮบฮฌฯฮผฮฑ ฮผฮฑฮถฮฏ ฮผฮต ฮญฮฝฮฑ ฯ€ฮปฮฑฮฏฯƒฮนฮฟ ฯ€ฮฟฯ… ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน ฮผฮฟฮนฯฮฟฮณฮฝฯ‰ฮผฯŒฮฝฮนฮฟ ฮญฯ‡ฮตฮน ฯ„ฮท ฮปฮตฮนฯ„ฮฟฯ…ฯฮณฮนฮบฯŒฯ„ฮทฯ„ฮฑ ฮดฮฟฮบฮนฮผฮฎฯ‚ ฮผฮนฮฑฯ‚ ฮดฮนฮฑฮดฮนฮบฯ„ฯ…ฮฑฮบฮฎฯ‚ ฮตฯ†ฮฑฯฮผฮฟฮณฮฎฯ‚ ฮฑฯ€ฯŒ ฮฌฮบฯฮท ฯƒฮต ฮฌฮบฯฮท.

    ฮ•ฯ€ฮฟฮผฮญฮฝฯ‰ฯ‚, ฮดฮตฮฝ ฮตฮฏฮฝฮฑฮน ฮผฯŒฮฝฮฟ ฮดฮฟฮบฮนฮผฮฎ ฮฟฮดฮทฮณฮนฯŽฮฝ ฮบฮฑฮน ฮตฮปฮตฮณฮบฯ„ฯŽฮฝ, ฮฑฮปฮปฮฌ ฮบฮฑฮน ฮดฮฟฮบฮนฮผฮฎ ฮฟฯ€ฮฟฮนฮฟฯ…ฮดฮฎฯ€ฮฟฯ„ฮต ฮฌฮปฮปฮฟฯ… ฮผฯ€ฮฟฯฮตฮฏ ฮฝฮฑ ฮตฮผฯ†ฮฑฮฝฮฏฮถฮตฯ„ฮฑฮน ฯƒฮต ฮผฮนฮฑ ฯƒฮตฮปฮฏฮดฮฑ HTML.

    ฮ‘ฯ‚ ฮดฮฟฯฮผฮต ฮญฮฝฮฑ ฯ€ฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ ฮณฮนฮฑ ฯ„ฮฟ ฯ€ฯŽฯ‚ ฮผฯ€ฮฟฯฮฟฯฮผฮต ฮฝฮฑ ฯ„ฮฟ ฯ€ฮตฯ„ฯฯ‡ฮฟฯ…ฮผฮต ฮฑฯ…ฯ„ฯŒ.

    ฮฃฯ„ฮฟ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฯ€ฮฑฯฮฌฮดฮตฮนฮณฮผฮฌ ฮผฮฑฯ‚, ฮธฮฑ ฮญฯ‡ฮฟฯ…ฮผฮต ฮผฮนฮฑ ฮตฯ†ฮฑฯฮผฮฟฮณฮฎ AngularJS ฯ€ฮฟฯ… ฮดฮทฮผฮนฮฟฯ…ฯฮณฮตฮฏ ฮญฮฝฮฑฮฝ ฯ€ฮฏฮฝฮฑฮบฮฑ ฮดฮตฮดฮฟฮผฮญฮฝฯ‰ฮฝ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฯŽฮฝฯ„ฮฑฯ‚ ฯ„ฮทฮฝ ฮฟฮดฮทฮณฮฏฮฑ ng-repeat.

    1. ฮ”ฮทฮผฮนฮฟฯ…ฯฮณฮฟฯฮผฮต ฯ€ฯฯŽฯ„ฮฑ ฮผฮนฮฑ ฮผฮตฯ„ฮฑฮฒฮปฮทฯ„ฮฎ ฯ€ฮฟฯ… ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน "tutorial" ฮบฮฑฮน ฯ„ฮทฯ‚ ฮตฮบฯ‡ฯ‰ฯฮฟฯฮผฮต ฮผฮตฯฮนฮบฮฌ ฮถฮตฯฮณฮท ฮบฮปฮตฮนฮดฮนฯŽฮฝ-ฯ„ฮนฮผฯŽฮฝ ฯƒฮต ฮญฮฝฮฑ ฮฒฮฎฮผฮฑ. ฮšฮฌฮธฮต ฮถฮตฯฮณฮฟฯ‚ ฮบฮปฮตฮนฮดฮนฮฟฯ-ฯ„ฮนฮผฮฎฯ‚ ฮธฮฑ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮทฮธฮตฮฏ ฯ‰ฯ‚ ฮดฮตฮดฮฟฮผฮญฮฝฮฑ ฮบฮฑฯ„ฮฌ ฯ„ฮทฮฝ ฮตฮผฯ†ฮฌฮฝฮนฯƒฮท ฯ„ฮฟฯ… ฯ€ฮฏฮฝฮฑฮบฮฑ. ฮฃฯ„ฮท ฯƒฯ…ฮฝฮญฯ‡ฮตฮนฮฑ, ฮท ฮผฮตฯ„ฮฑฮฒฮปฮทฯ„ฮฎ tutorial ฮตฮบฯ‡ฯ‰ฯฮตฮฏฯ„ฮฑฮน ฯƒฯ„ฮฟ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ scope ฮญฯ„ฯƒฮน ฯŽฯƒฯ„ฮต ฮฝฮฑ ฮตฮฏฮฝฮฑฮน ฯ€ฯฮฟฯƒฮฒฮฌฯƒฮนฮผฮท ฮฑฯ€ฯŒ ฯ„ฮทฮฝ ฮฌฯ€ฮฟฯˆฮฎ ฮผฮฑฯ‚.
    2. ฮ“ฮนฮฑ ฮบฮฌฮธฮต ฯƒฮตฮนฯฮฌ ฮดฮตฮดฮฟฮผฮญฮฝฯ‰ฮฝ ฯƒฯ„ฮฟฮฝ ฯ€ฮฏฮฝฮฑฮบฮฑ, ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮฟฯฮผฮต ฯ„ฮทฮฝ ฮฟฮดฮทฮณฮฏฮฑ ng-repeat. ฮ‘ฯ…ฯ„ฮฎ ฮท ฮฟฮดฮทฮณฮฏฮฑ ฯ€ฮตฯฮฝฮฌ ฮผฮญฯƒฮฑ ฮฑฯ€ฯŒ ฮบฮฌฮธฮต ฮถฮตฯฮณฮฟฯ‚ ฮบฮปฮตฮนฮดฮนฮฟฯ-ฯ„ฮนฮผฮฎฯ‚ ฯƒฯ„ฮฟ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ ฯ„ฮฟฯ… tutorial scope ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฯŽฮฝฯ„ฮฑฯ‚ ฯ„ฮท ฮผฮตฯ„ฮฑฮฒฮปฮทฯ„ฮฎ ptutor.
    3. ฮคฮญฮปฮฟฯ‚, ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮฟฯฮผฮต ฯ„ฮฟ ฮตฯ„ฮนฮบฮญฯ„ฮฑ ฮผฮฑฮถฮฏ ฮผฮต ฯ„ฮฑ ฮถฮตฯฮณฮท ฯ„ฮนฮผฯŽฮฝ ฮบฮปฮตฮนฮดฮนฮฟฯ (ptutor.Name ฮบฮฑฮน ptutor.Description) ฮณฮนฮฑ ฮฝฮฑ ฮตฮผฯ†ฮฑฮฝฮฏฯƒฮตฯ„ฮต ฯ„ฮฑ ฮดฮตฮดฮฟฮผฮญฮฝฮฑ ฯ„ฮฟฯ… ฯ€ฮฏฮฝฮฑฮบฮฑ.
    <table >
                 <tr ng-repeat="ptutor in tutorial">
                       <td>{{ ptutor.Name }}</td>
    	               <td>{{ ptutor.Description }}</td>
                 </tr>
       </table>
    </div>
      <script type="text/javascript">
          var app = AngularJS.module('DemoApp', []);
            app.controller('DemoController', function($scope) {
               $scope.tutorial =[
                    {Name: "Controllers" , Description : "Controllers in action"},
                    {Name: "Models" , Description : "Models and binding data"},
    	            {Name: "Directives" , Description : "Flexibility of Directives"}
    			]   });

    ฮœฯŒฮปฮนฯ‚ ฮฟ ฯ€ฮฑฯฮฑฯ€ฮฌฮฝฯ‰ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฮตฮบฯ„ฮตฮปฮตฯƒฯ„ฮตฮฏ ฮผฮต ฮตฯ€ฮนฯ„ฯ…ฯ‡ฮฏฮฑ, ฯ„ฮฟ ฮตฯ€ฯŒฮผฮตฮฝฮฟ ฮฒฮฎฮผฮฑ ฮธฮฑ ฮฎฯ„ฮฑฮฝ ฮฝฮฑ ฮดฮทฮผฮนฮฟฯ…ฯฮณฮฎฯƒฮตฯ„ฮต ฮผฮนฮฑ ฮดฮฟฮบฮนฮผฮฑฯƒฯ„ฮนฮบฮฎ ฯ€ฮตฯฮฏฯ€ฯ„ฯ‰ฯƒฮท ฮณฮนฮฑ ฮฝฮฑ ฮดฮนฮฑฯƒฯ†ฮฑฮปฮฏฯƒฮตฯ„ฮต ฯŒฯ„ฮน ฮฟ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฮญฯ‡ฮตฮน ฮณฯฮฑฯ†ฯ„ฮตฮฏ ฮบฮฑฮน ฮตฮบฯ„ฮตฮปฮตฯƒฯ„ฮตฮฏ ฯƒฯ‰ฯƒฯ„ฮฌ. ฮŸ ฮบฯ‰ฮดฮนฮบฯŒฯ‚ ฮณฮนฮฑ ฯ„ฮท ฮดฮฟฮบฮนฮผฮฎ ฮผฮฑฯ‚ ฮธฮฑ ฮตฮฏฮฝฮฑฮน ฯŒฯ€ฯ‰ฯ‚ ฯ†ฮฑฮฏฮฝฮตฯ„ฮฑฮน ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰

    ฮ— ฮดฮฟฮบฮนฮผฮฎ ฮผฮฑฯ‚ ฯ€ฯฯŒฮบฮตฮนฯ„ฮฑฮน ฯƒฯ„ฮทฮฝ ฯ€ฯฮฑฮณฮผฮฑฯ„ฮนฮบฯŒฯ„ฮทฯ„ฮฑ ฮฝฮฑ ฮดฮฟฮบฮนฮผฮฌฯƒฮตฮน ฯ„ฮทฮฝ ฮฟฮดฮทฮณฮฏฮฑ ng-repeat ฮบฮฑฮน ฮฝฮฑ ฮดฮนฮฑฯƒฯ†ฮฑฮปฮฏฯƒฮตฮน ฯŒฯ„ฮน ฯ€ฮตฯฮนฮญฯ‡ฮตฮน 3 ฯƒฮตฮนฯฮญฯ‚ ฮดฮตฮดฮฟฮผฮญฮฝฯ‰ฮฝ ฯŒฯ€ฯ‰ฯ‚ ฮธฮฑ ฮญฯ€ฯฮตฯ€ฮต ฮฑฯ€ฯŒ ฯ„ฮฟ ฯ€ฮฑฯฮฑฯ€ฮฌฮฝฯ‰ ฯ€ฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ.

    ฮ ฯฯŽฯ„ฮฑ ฯ€ฯฮญฯ€ฮตฮน ฮฝฮฑ ฮดฮนฮฑฯƒฯ†ฮฑฮปฮฏฯƒฮฟฯ…ฮผฮต ฯŒฯ„ฮน ฯ…ฯ€ฮฌฯฯ‡ฮตฮน ฮท ฮฑฮบฯŒฮปฮฟฯ…ฮธฮท ฯ€ฯฮฟฯ‹ฯ€ฯŒฮธฮตฯƒฮท

    ฮ•ฮณฮบฮฑฯ„ฮฑฯƒฯ„ฮฎฯƒฯ„ฮต ฯ„ฮท ฮฒฮนฮฒฮปฮนฮฟฮธฮฎฮบฮท ฮผฮฟฮนฯฮฟฮณฮฝฯ‰ฮผฯŒฮฝฮนฮฟฯ… ฮผฮญฯƒฯ‰ npm. ฮ‘ฯ…ฯ„ฯŒ ฮผฯ€ฮฟฯฮตฮฏ ฮฝฮฑ ฮณฮฏฮฝฮตฮน ฮตฮบฯ„ฮตฮปฯŽฮฝฯ„ฮฑฯ‚ ฯ„ฮทฮฝ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฮณฯฮฑฮผฮผฮฎ ฯƒฯ„ฮท ฮณฯฮฑฮผฮผฮฎ ฮตฮฝฯ„ฮฟฮปฯŽฮฝ

    "npm install protractor"

    ฮŸ ฮบฯ‰ฮดฮนฮบฯŒฯ‚ ฮณฮนฮฑ ฯ„ฮท ฮดฮฟฮบฮนฮผฮฎ ฮผฮฑฯ‚ ฮธฮฑ ฮตฮฏฮฝฮฑฮน ฯŒฯ€ฯ‰ฯ‚ ฯ†ฮฑฮฏฮฝฮตฯ„ฮฑฮน ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰.

    ฮŸ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฮธฮฑ ฮฒฯฮฏฯƒฮบฮตฯ„ฮฑฮน ฯƒฮต ฮญฮฝฮฑ ฮพฮตฯ‡ฯ‰ฯฮนฯƒฯ„ฯŒ ฮฑฯฯ‡ฮตฮฏฮฟ ฯ€ฮฟฯ… ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน CompleteTest.js , ฯ„ฮฟ ฮฟฯ€ฮฟฮฏฮฟ ฮธฮฑ ฯ„ฮฟฯ€ฮฟฮธฮตฯ„ฮทฮธฮตฮฏ ฯƒฯ„ฮฟฮฝ ฯ†ฮฌฮบฮตฮปฮฟ ฮดฮฟฮบฮนฮผฮฎฯ‚. ฮŸ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฮบฮฌฮฝฮตฮน ฮฑฯ€ฮปฯŽฯ‚ ฯ„ฮฑ ฮฑฮบฯŒฮปฮฟฯ…ฮธฮฑ ฮฒฮฑฯƒฮนฮบฮฌ ฯ€ฯฮฌฮณฮผฮฑฯ„ฮฑ

    1. ฮ— ฮปฮตฮนฯ„ฮฟฯ…ฯฮณฮฏฮฑ ฯ„ฮฟฯ… ฯ€ฯฮฟฮณฯฮฌฮผฮผฮฑฯ„ฮฟฯ‚ ฯ€ฮตฯฮนฮฎฮณฮทฯƒฮทฯ‚ ฯ€ฮฑฯฮญฯ‡ฮตฯ„ฮฑฮน ฮฑฯ€ฯŒ ฯ„ฮท ฮฒฮนฮฒฮปฮนฮฟฮธฮฎฮบฮท ฮผฮฟฮนฯฮฟฮณฮฝฯ‰ฮผฯŒฮฝฮนฮฟฯ… ฮบฮฑฮน ฯ€ฯฮฟฯ‹ฯ€ฮฟฮธฮญฯ„ฮตฮน ฯŒฯ„ฮน ฮท ฮตฯ†ฮฑฯฮผฮฟฮณฮฎ AngularJS (ฮผฮต ฯ„ฮฟฮฝ ฮบฯŽฮดฮนฮบฮฑ ฯ€ฮฟฯ… ฯ†ฮฑฮฏฮฝฮตฯ„ฮฑฮน ฯ€ฮฑฯฮฑฯ€ฮฌฮฝฯ‰) ฮตฮบฯ„ฮตฮปฮตฮฏฯ„ฮฑฮน ฯƒฯ„ฮท ฮดฮนฮตฯฮธฯ…ฮฝฯƒฮท URL ฯ„ฮฟฯ… ฮนฯƒฯ„ฯŒฯ„ฮฟฯ€ฮฟฯ ฮผฮฑฯ‚ โ€“ http://localhost:8080/Guru99/
    2. var list=element.all(by.repeater(ptutor in tutorial')); -ฮ‘ฯ…ฯ„ฮฎ ฮท ฮณฯฮฑฮผฮผฮฎ ฮบฯŽฮดฮนฮบฮฑ ฮปฮฑฮผฮฒฮฌฮฝฮตฮน ฯƒฯ„ฮทฮฝ ฯ€ฯฮฑฮณฮผฮฑฯ„ฮนฮบฯŒฯ„ฮทฯ„ฮฑ ฯ„ฮทฮฝ ฮฟฮดฮทฮณฮฏฮฑ ng-repeat, ฮท ฮฟฯ€ฮฟฮฏฮฑ ฯƒฯ…ฮผฯ€ฮปฮทฯฯŽฮฝฮตฯ„ฮฑฮน ฮฑฯ€ฯŒ ฯ„ฮฟฮฝ ฮบฯŽฮดฮนฮบฮฑ ยซptutor in tutorialยป. ฮคฮฟ ฯƒฯ„ฮฟฮนฯ‡ฮตฮฏฮฟ ฮบฮฑฮน ฯ„ฮฟ by.repeater ฮตฮฏฮฝฮฑฮน ฮตฮนฮดฮนฮบฮญฯ‚ ฮปฮญฮพฮตฮนฯ‚-ฮบฮปฮตฮนฮดฮนฮฌ ฯ€ฮฟฯ… ฯ€ฮฑฯฮญฯ‡ฮฟฮฝฯ„ฮฑฮน ฮฑฯ€ฯŒ ฯ„ฮท ฮฒฮนฮฒฮปฮนฮฟฮธฮฎฮบฮท ฮผฮฟฮนฯฮฟฮณฮฝฯ‰ฮผฯŒฮฝฮนฮฟฯ… ฯ€ฮฟฯ… ฮผฮฑฯ‚ ฮตฯ€ฮนฯ„ฯฮญฯ€ฮตฮน ฮฝฮฑ ฮปฮฑฮผฮฒฮฌฮฝฮฟฯ…ฮผฮต ฮปฮตฯ€ฯ„ฮฟฮผฮญฯฮตฮนฮตฯ‚ ฮณฮนฮฑ ฯ„ฮทฮฝ ฮฟฮดฮทฮณฮฏฮฑ ng-repeat.
    3. expect(list.count()).toEqual(3); โ€“ ฮคฮญฮปฮฟฯ‚, ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮฟฯฮผฮต ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฮฑฮฝฮฑฮผฮฟฮฝฮฎฯ‚ ฮณฮนฮฑ ฮฝฮฑ ฮดฮฟฯฮผฮต ฯŒฯ„ฮน ฯŒฮฝฯ„ฯ‰ฯ‚ ฮปฮฑฮผฮฒฮฌฮฝฮฟฯ…ฮผฮต 3 ฯƒฯ„ฮฟฮนฯ‡ฮตฮฏฮฑ ฯ€ฮฟฯ… ฯƒฯ…ฮผฯ€ฮปฮทฯฯŽฮฝฮฟฮฝฯ„ฮฑฮน ฯƒฯ„ฮฟฮฝ ฯ€ฮฏฮฝฮฑฮบฮฌ ฮผฮฑฯ‚ ฯ‰ฯ‚ ฮฑฯ€ฮฟฯ„ฮญฮปฮตฯƒฮผฮฑ ฯ„ฮทฯ‚ ฮฟฮดฮทฮณฮฏฮฑฯ‚ ng-repeat.
    Describe('Unit testing end to end', function() {
      beforeEach(function() {
    browser.get('http://localhost:8080/Guru99/');
    })
       it('Check the ng directive', function() {
          var list=element.all(by.repeater(ptutor in tutorial'));
          expect(list.count()).toEqual(3);  }); });

    ฮคฮฟ ฯ€ฮฑฯฮฑฯ€ฮฌฮฝฯ‰ ฯ„ฮตฯƒฯ„ ฮธฮฑ ฮตฮบฯ„ฮตฮปฮตฯƒฯ„ฮตฮฏ ฯƒฯ„ฮฟ ฯ€ฯฯŒฮณฯฮฑฮผฮผฮฑ ฯ€ฮตฯฮนฮฎฮณฮทฯƒฮทฯ‚ karma ฮบฮฑฮน ฮธฮฑ ฮดฯŽฯƒฮตฮน ฯ„ฮฟ ฮฏฮดฮนฮฟ ฮฑฯ€ฮฟฯ„ฮญฮปฮตฯƒฮผฮฑ ฮตฯ€ฮนฯ„ฯ…ฯ‡ฮฏฮฑฯ‚ ฯŒฯ€ฯ‰ฯ‚ ฯ€ฮฑฯฮฟฯ…ฯƒฮนฮฌฯƒฯ„ฮทฮบฮต ฯƒฯ„ฮฟ ฯ€ฯฮฟฮทฮณฮฟฯฮผฮตฮฝฮฟ ฮธฮญฮผฮฑ.

    ฮ ฮตฯฮฏฮปฮทฯˆฮท

    • ฮ— ฮดฮฟฮบฮนฮผฮฎ ฯƒฯ„ฮฟ AngularJS ฮตฯ€ฮนฯ„ฯ…ฮณฯ‡ฮฌฮฝฮตฯ„ฮฑฮน ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฯŽฮฝฯ„ฮฑฯ‚ ฯ„ฮฟ ฯ€ฮปฮฑฮฏฯƒฮนฮฟ karma, ฮญฮฝฮฑ ฯ€ฮปฮฑฮฏฯƒฮนฮฟ ฯ€ฮฟฯ… ฮญฯ‡ฮตฮน ฮฑฮฝฮฑฯ€ฯ„ฯ…ฯ‡ฮธฮตฮฏ ฮฑฯ€ฯŒ ฯ„ฮทฮฝ ฮฏฮดฮนฮฑ ฯ„ฮทฮฝ Google.
    • ฮคฮฟ ฯ€ฮปฮฑฮฏฯƒฮนฮฟ ฮบฮฌฯฮผฮฑ ฮตฮณฮบฮฑฮธฮฏฯƒฯ„ฮฑฯ„ฮฑฮน ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฯŽฮฝฯ„ฮฑฯ‚ ฯ„ฮฟฮฝ ฮดฮนฮฑฯ‡ฮตฮนฯฮนฯƒฯ„ฮฎ ฯ€ฮฑฮบฮญฯ„ฯ‰ฮฝ ฮบฯŒฮผฮฒฮฟฯ…. ฮŸฮน ฮฒฮฑฯƒฮนฮบฮญฯ‚ ฮผฮฟฮฝฮฌฮดฮตฯ‚ ฯ€ฮฟฯ… ฮฑฯ€ฮฑฮนฯ„ฮตฮฏฯ„ฮฑฮน ฮฝฮฑ ฮตฮณฮบฮฑฯ„ฮฑฯƒฯ„ฮฑฮธฮฟฯฮฝ ฮณฮนฮฑ ฯ„ฮท ฮฒฮฑฯƒฮนฮบฮฎ ฮดฮฟฮบฮนฮผฮฎ ฮตฮฏฮฝฮฑฮน ฯ„ฮฟ karma, ฯ„ฮฟ karma-chrome-launcher, ฯ„ฮฟ karma-jasmine ฮบฮฑฮน ฯ„ฮฟ karma-cli.
    • ฮŸฮน ฮดฮฟฮบฮนฮผฮญฯ‚ ฮตฮฏฮฝฮฑฮน ฮณฯฮฑฮผฮผฮญฮฝฮตฯ‚ ฯƒฮต ฮพฮตฯ‡ฯ‰ฯฮนฯƒฯ„ฮฌ ฮฑฯฯ‡ฮตฮฏฮฑ js, ฯ€ฮฟฯ… ฯƒฯ…ฮฝฮฎฮธฯ‰ฯ‚ ฯ†ฯ…ฮปฮฌฯƒฯƒฮฟฮฝฯ„ฮฑฮน ฯƒฯ„ฮฟฮฝ ฯ†ฮฌฮบฮตฮปฮฟ ฮดฮฟฮบฮนฮผฮฎฯ‚ ฯ„ฮทฯ‚ ฮตฯ†ฮฑฯฮผฮฟฮณฮฎฯ‚ ฯƒฮฑฯ‚. ฮ— ฮธฮญฯƒฮท ฮฑฯ…ฯ„ฯŽฮฝ ฯ„ฯ‰ฮฝ ฮฑฯฯ‡ฮตฮฏฯ‰ฮฝ ฮดฮฟฮบฮนฮผฮฎฯ‚ ฯ€ฯฮญฯ€ฮตฮน ฮฝฮฑ ฮฑฮฝฮฑฯ†ฮญฯฮตฯ„ฮฑฮน ฯƒฮต ฮญฮฝฮฑ ฮตฮนฮดฮนฮบฯŒ ฮฑฯฯ‡ฮตฮฏฮฟ ฮดฮนฮฑฮผฯŒฯฯ†ฯ‰ฯƒฮทฯ‚ ฯ€ฮฟฯ… ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน karma.conf.js. ฮคฮฟ Karma ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏ ฮฑฯ…ฯ„ฯŒ ฯ„ฮฟ ฮฑฯฯ‡ฮตฮฏฮฟ ฮดฮนฮฑฮผฯŒฯฯ†ฯ‰ฯƒฮทฯ‚ ฮบฮฑฯ„ฮฌ ฯ„ฮทฮฝ ฮตฮบฯ„ฮญฮปฮตฯƒฮท ฯŒฮปฯ‰ฮฝ ฯ„ฯ‰ฮฝ ฮดฮฟฮบฮนฮผฯŽฮฝ.
    • ฮคฮฟ Karma ฮผฯ€ฮฟฯฮตฮฏ ฮฝฮฑ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮทฮธฮตฮฏ ฮณฮนฮฑ ฯ„ฮท ฮดฮฟฮบฮนฮผฮฎ ฮตฮปฮตฮณฮบฯ„ฯŽฮฝ ฮบฮฑฮน ฯ€ฯฮฟฯƒฮฑฯฮผฮฟฯƒฮผฮญฮฝฯ‰ฮฝ ฮฟฮดฮทฮณฮนฯŽฮฝ ฮตฯ€ฮฏฯƒฮทฯ‚.
    • ฮ“ฮนฮฑ ฮผฮนฮฑ ฮฟฮปฮฟฮบฮปฮทฯฯ‰ฮผฮญฮฝฮท ฮดฮฟฮบฮนฮผฮฎ web, ฮญฮฝฮฑ ฮฌฮปฮปฮฟ ฯ€ฮปฮฑฮฏฯƒฮนฮฟ ฯ€ฮฟฯ… ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน ฮผฮฟฮนฯฮฟฮณฮฝฯ‰ฮผฯŒฮฝฮนฮฟ ฯ€ฯฮญฯ€ฮตฮน ฮฝฮฑ ฮตฮณฮบฮฑฯ„ฮฑฯƒฯ„ฮฑฮธฮตฮฏ ฮผฮญฯƒฯ‰ ฯ„ฮฟฯ… Node, ฮดฮนฮฑฯ‡ฮตฮฏฯฮนฯƒฮทฯ‚ ฯ€ฮฑฮบฮญฯ„ฯ‰ฮฝ. ฮ‘ฯ…ฯ„ฯŒ ฯ„ฮฟ ฯ€ฮปฮฑฮฏฯƒฮนฮฟ ฯ€ฮฑฯฮญฯ‡ฮตฮน ฮตฮนฮดฮนฮบฮญฯ‚ ฮผฮตฮธฯŒฮดฮฟฯ…ฯ‚ ฯ€ฮฟฯ… ฮผฯ€ฮฟฯฮฟฯฮฝ ฮฝฮฑ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮทฮธฮฟฯฮฝ ฮณฮนฮฑ ฯ„ฮฟฮฝ ฮญฮปฮตฮณฯ‡ฮฟ ฯŒฮปฯ‰ฮฝ ฯ„ฯ‰ฮฝ ฯƒฯ„ฮฟฮนฯ‡ฮตฮฏฯ‰ฮฝ ฯƒฮต ฮผฮนฮฑ ฯƒฮตฮปฮฏฮดฮฑ HTML.

    ฮฃฯ…ฮฝฮฟฯˆฮฏฯƒฯ„ฮต ฮฑฯ…ฯ„ฮฎฮฝ ฯ„ฮทฮฝ ฮฑฮฝฮฌฯฯ„ฮทฯƒฮท ฮผฮต: