Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LT-Jasmine.pdf

Hanxiao
December 07, 2012
65

 LT-Jasmine.pdf

Hanxiao

December 07, 2012
Tweet

Transcript

  1. WHAT IS BDD? Behavior driven development Based on TDD Not

    change test flow Another way to write Unit Test
  2. WRITING TEST BY SCENARIO : Calculator can add integers a

    calculator two integers calling 'add' function should return the sum Scenario Given And When It
  3. THE UNIT TEST WAY p u b l i c

    c l a s s T e s t C a l c u l a t o r { p r i v a t e C a l c u l a t o r c a l ; @ B e f o r e p u b l i c v o i d s e t U p ( ) { C a l c u l a t o r c a l = n e w C a l c u l a t o r ( ) ; } @ T e s t p u b l i c v o i d t e s t A d d I n t e g e r s ( ) { a s s e r t E q u a l s ( 3 , c a l . a d d ( 1 , 2 ) ) ; } }
  4. LETS BDD WITH JASMINE! write a test spec file calculatorSpec.js

    d e s c r i b e ( " A C a l c u l a t o r " , f u n c t i o n ( ) { v a r c a l ; b e f o r e E a c h ( f u n c t i o n ( ) { c a l = n e w C a l c u l a t o r ( ) ; } ) ; d e s c r i b e ( " w h e n a d d i n g t w o i n t e g e r s " , f u n c t i o n ( ) { i t ( " s h o u l d r e t u r n t h e s u m " , f u n c t i o n ( ) { e x p e c t ( c a l . a d d ( 1 , 2 ) ) . t o E q u a l ( 3 ) ; } ) ; } ) } )
  5. GET IT RUN IN BROWSER < h e a d

    > < s c r i p t s r c = " j a s m i n e . j s " > < / s c r i p t > < s c r i p t s r c = " j a s m i n e - h t m l . j s " > < / s c r i p t > < s c r i p t > < / s c r i p t > < s c r i p t s r c = " c a l c u l a t o r S p e c . j s " > < / s c r i p t > < l i n k r e l = " s t y l e s h e e t " h r e f = " j a s m i n e . c s s " > < / h e a d > < b o d y > < d i v i d = " j a s m i n e _ c o n t e n t " > < / d i v > < / b o d y > ( f u n c t i o n ( ) { v a r j a s m i n e E n v = j a s m i n e . g e t E n v ( ) j a s m i n e E n v . a d d R e p o r t e r ( n e w j a s m i n e . H t m l R e p o r t e r ) w i n d o w . o n l o a d = f u n c t i o n ( ) { j a s m i n e E n v . e x e c u t e ( ) } ; } ) ( ) ;
  6. WRITE THE CODE implement code in add it to html

    calculator.js f u n c t i o n C a l c u l a t o r ( ) { t h i s . a d d = f u n c t i o n ( a , b ) { r e t u r n a + b ; } } < h e a d > < s c r i p t s r c = " c a l c u l a t o r . j s " > < / s c r i p t > < / h e a d >
  7. MORE MATCHERS e x p e c t ( a

    ) . t o B e ( b ) ; e x p e c t ( a ) . n o t . t o B e ( n u l l ) ; e x p e c t ( a . f o o ) . t o B e D e f i n e d ( ) ; e x p e c t ( a . b a r ) . t o B e U n d e f i n e d ( ) ; e x p e c t ( b a r ) . t o T h r o w ( ) ; e x p e c t ( f o o ) . n o t . t o T h r o w ( ) ;
  8. TEST WITH JQUERY Use jasmine-jquery l o a d F

    i x t u r e s ( ' i n d e x . h t m l ' ) ; e x p e c t ( $ ( ' # s o m e - i d ' ) ) . t o B e V i s i b l e ( ) ; e x p e c t ( $ ( ' # s o m e - i d ' ) ) . t o B e H i d d e n ( ) ; e x p e c t ( $ ( ' # s o m e - i d ' ) ) . t o H a v e C l a s s ( " i n " ) ; e x p e c t ( $ ( ' # s o m e - i d ' ) ) . n o t . t o H a v e C l a s s ( " e r r o r " ) ; e x p e c t ( $ ( ' # s o m e - i d ' ) ) . t o B e D i s a b l e d ( ) ; e x p e c t ( $ ( ' # s o m e - i d ' ) ) . t o B e F o c u s e d ( ) ;
  9. REFERENCE : unit test framework for javascript on Github Behavior-driven

    development Official Jasmine Document QUnit jasmine-jquery