рдЪрдореЗрд▓реА рдХрд╛ рдкрд░рд┐рдЪрдп


рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЖрджрд░реНрд╢ рд╣реИ, рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдФрд░ рдЗрд╕рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝ рд░рд╣реА рд╣реИред рдЕрдХреНрд╕рд░ рдкрд░реАрдХреНрд╖рдг рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдФрд░ Node.js рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реНрдореАрди рдХрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЬреИрд╕реНрдореАрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░-рдкреНрд░реЗрд░рд┐рдд рд╡рд┐рдХрд╛рд╕ (рд╡реНрдпрд╡рд╣рд╛рд░-рд╡рд┐рдХрд╛рд╕ рд╡рд┐рдХрд╛рд╕) рд░реВрдкрд░реЗрдЦрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ RSpec рд╕реЗ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛ рд╣реИред



рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ ( рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрджрд╛рд╣рд░рдг ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд┐рдП рдЧрдП рд╣реИрдВред

рдЖрдк рдЬреИрд╕реНрдореАрди рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ рдЬреИрд╕реНрдореАрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ:



рдЬреИрд╕реНрдореАрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдореБрдЦреНрдп рдХреАрд╡рд░реНрдб рд╣реИрдВ:



рдХреАрд╡рд░реНрдб рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдирд┐рдпрдорд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╣реИрдВ рдЬреЛ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рд╕рдореВрд╣ рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдирд╛рдо рд╣реИ, рджреВрд╕рд░рд╛ рдлрд╝рдВрдХреНрд╢рди рдЬрд┐рд╕рдореЗрдВ рдХреЛрдб рд╣реИред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг:

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) #  - a   b it "   ", -> expect(window.document).toBeDefined() it "    ", -> expect(window.notExists).toBeUndefined() it "   null", -> a = null expect(a).toBeNull() it "   ", -> expect(5 > 0).toBeTruthy() it "    ", -> expect(5 < 0).toBeFalsy() it "    ", -> expect(1 + 2).toBeLessThan(5) it "    ", -> expect(1 + 2).toBeGreaterThan(0) it "     ", -> expect(1.2345).toBeCloseTo(1.2, 1) it "    ", -> expect("some string").toMatch(/string/) it "  ", -> expect([1, 2, 3]).toContain(2) expect("some string").toContain("some") it "   ", -> func = -> window.notExists.value expect(func).toThrow() 


рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рдЬреБрдбрд╝рдирд╛рд░ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ / рдмрд╛рдж рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рд╕реЗрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ / рдмрд╛рдж рдореЗрдВ рджреМрдбрд╝рддреЗ рд╣реИрдВред

 describe "/", -> val = 0 #        beforeEach -> val += 1 afterEach -> val = 0 it " val", -> expect(val).toEqual(1) 


рдЬреИрд╕реНрдореАрди рд░рди рдФрд░ 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 - рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг

Source: https://habr.com/ru/post/In167173/


All Articles