
рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЖрджрд░реНрд╢ рд╣реИ, рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдФрд░ рдЗрд╕рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝ рд░рд╣реА рд╣реИред рдЕрдХреНрд╕рд░ рдкрд░реАрдХреНрд╖рдг рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдФрд░ Node.js рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реНрдореАрди рдХрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬреИрд╕реНрдореАрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░-рдкреНрд░реЗрд░рд┐рдд рд╡рд┐рдХрд╛рд╕ (рд╡реНрдпрд╡рд╣рд╛рд░-рд╡рд┐рдХрд╛рд╕ рд╡рд┐рдХрд╛рд╕) рд░реВрдкрд░реЗрдЦрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ RSpec рд╕реЗ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛ рд╣реИред
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ (
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрджрд╛рд╣рд░рдг ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд┐рдП рдЧрдП рд╣реИрдВред
рдЖрдк
рдЬреИрд╕реНрдореАрди рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ
рдЬреИрд╕реНрдореАрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ:
- lib / jasmine - * / jasmine.js - рдврд╛рдВрдЪрд╛ рд╣реА
- lib / jasmine - * / jasmine-html.js - рдкрд░рд┐рдгрд╛рдо рдХреЛ HTML рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░рдирд╛
- lib / jasmine - * / jasmine.css - рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐
- SpecRunner.html - рдлрд╝рд╛рдЗрд▓ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓реА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП
рдЬреИрд╕реНрдореАрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдореБрдЦреНрдп рдХреАрд╡рд░реНрдб рд╣реИрдВ:
- рд╡рд░реНрдгрди - рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛, рд╕реЗрдЯ рдиреЗрд╕реНрдЯреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
- рдпрд╣ - рдХрд┐рд╕реА рднреА рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЗ рдЕрдВрджрд░ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рднрд╛рд╖рд╛
- рдЕрдкреЗрдХреНрд╖рд╛ - рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреА рдЧрдИ рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ
рдХреАрд╡рд░реНрдб
рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░
рдпрд╣ рдирд┐рдпрдорд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╣реИрдВ рдЬреЛ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рд╕рдореВрд╣ рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдирд╛рдо рд╣реИ, рджреВрд╕рд░рд╛ рдлрд╝рдВрдХреНрд╢рди рдЬрд┐рд╕рдореЗрдВ рдХреЛрдб рд╣реИред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг:
describe " ", -> it " ", -> expect(1 + 2).toBe(3)
рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреНрд░рдорд╢рдГ рдХреАрд╡рд░реНрдб
xdescribe рдФрд░
xit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
describe "", -> xdescribe " ", -> it " , ", -> expect(true).toBe(true) xit " ", -> expect(true).toBe(true)
рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдЬреИрд╕реНрдореАрди рдХреЗ рдкрд╛рд╕ рдЙрдореНрдореАрджреЛрдВ рдХрд╛ рдПрдХ рдорд╛рдирдХ рд╕рдореВрд╣ рд╣реИ:
it " ===", -> expect(1 + 2).toBe(3) it " ( )", -> a = {x: 8, y: 9} b = {x: 8, y: 9} expect(a).toEqual(b) expect(a).not.toBe(b)
рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рдЬреБрдбрд╝рдирд╛рд░ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП,
рдкрд╣рд▓реЗ /
рдмрд╛рдж рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рд╕реЗрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ / рдмрд╛рдж рдореЗрдВ рджреМрдбрд╝рддреЗ рд╣реИрдВред
describe "/", -> val = 0
рдЬреИрд╕реНрдореАрди рд░рди рдФрд░ waitsFor рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред
- рд░рди - рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
- waitsFor - рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд╕рдЪ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЕрдЧрд░ рд░рди рдореЗрдВ рдХрд┐рдП рдЧрдП рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реИ, рдФрд░ рддреАрд╕рд░рд╛ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдордзреНрдпрд╛рдВрддрд░ рд╣реИред
describe "", -> a = 0 async = -> setTimeout((-> a = 5), 1000) it " ", -> runs(-> async()) waitsFor((-> a == 5), " ", 3000)
рд╣рдо рдЬрд╛рд╕реВрд╕реЛрдВ рдХреЗ рд╕рд╛рде "рдЬрд╛рд╕реВрд╕ (рдирдХрд▓реА рд╡рд╕реНрддреБ) рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╕рдордп (рдирдХрд▓реА рдШрдбрд╝реА) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдкреНрд░рд╢реНрди рдпрд╛ рдЯрд┐рдкреНрдкрдгреА рд╣реИ, рддреЛ рдореБрдЭреЗ рдЙрдирдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рднрд╛рдЧ рджреЛ:
"рдЪрдореЗрд▓реА - рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ"рд╕рдВрджрд░реНрдн:
github.com/pivotal/jasmine - GitHub рдкрд░ рдЬреИрд╕реНрдореАрди рдкреЗрдЬ
www.inexfinance.com/en/blog/2013/1/25/jasmine_for_clientside_testing - рд▓реЗрдЦ рдХрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг
github.com/inex-finance/blog-examples/tree/master/jasmine - рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг