t e l d e a l . S c e n a r i o : I l o a d f i x t u r e s f o r t h e s e s c a s e s G i v e n I h a v e s f G u a r d P e r m i s s i o n w i t h f i x t u r e s : | i d | n a m e | d e s c r i p t i o n | 1 | a d m i n . h o t e l . i n d e x | L i s t a l l h o t e l s | 2 | a d m i n . d e a l . i n d e x | L i s t a l l d e a l s | 3 | a d m i n . b o o k i n g . i n d e x | L i s t a l l b o o k i n g s | 4 | a d m i n . c i t y . i n d e x | L i s t a l l c i t i e s | 5 | a d m i n . c u s t o m e r . i n d e x | L i s t a l l c u s t o m e r s | 6 | h o t e l . d e a l . i n d e x | L i s t h o t e l d e a l s | 7 | h o t e l . b o o k i n g . i n d e x | L i s t h o t e l b o o k i n g s | 8 | h o t e l . p r o f i l e . g e n e r a l - i n f o r m a t i o n s . e d i t | E d i t h o t e l p r o f i l e g e n e r a l i n f o r m a t i o n s | 9 | h o t e l . p r o f i l e . a d m i n | M a n a g e a l l h o t e l p r o f i l e | 1 0 | h o t e l . d e a l . a d m i n | M a n a g e a l l h o t e l d e a l s | 1 1 | h o t e l . b o o k i n g . a d m i n | M a n a g e a l l h o t e l b o o k i n g s | 1 2 | h o t e l . p r o f i l e . d e s c r i p t i o n s . e d i t | E d i t h o t e l p r o f i l e d e s c r i p t i o n s | 1 3 | h o t e l . p r o f i l e . r o o m - t y p e s . i n d e x | L i s t h o t e l p r o f i l e r o o m t y p e s | 1 4 | h o t e l . p r o f i l e . p h o t o s . e d i t | E d i t h o t e l p r o f i l e r o o m t y p e s | 1 5 | h o t e l . p r o f i l e . b a n k - d e t a i l s . e d i t | E d i t h o t e l p r o f i l e b a n k d e t a i l s | 1 6 | h o t e l . b i l l i n g . i n d e x | L i s t b i l l s o f a n h o t e l
encourage la collaboration entre les développeurs, les responsables qualités, les intervenants non-techniques et les entreprises participant à un projet de logiciel. https://fr.wikipedia.org/wiki/Behavior_driven_development A project face serious problems when its language is fractured. Domain experts use their jargon while technical team members have their own. Eric Evans
laquelle l'écriture des tests automatisés dirige l'écriture du code source. C'est une technique très e cace pour livrer des logiciels bien construits avec une suite de tests de non-régression. http://www-igm.univ-mlv.fr/~dr/XPOSE2009/TDD/pagesHTML/Preambule.html
: A d d v e h i c l e I n o r d e r t o f o l l o w m a n y v e h i c l e s w i t h m y a p p l i c a t i o n # B é n é f i c e A s a n a p p l i c a t i o n u s e r # Q u i I s h o u l d b e a b l e t o a d d m y v e h i c l e # Q u o i
r e : A d d v e h i c l e I n o r d e r t o f o l l o w m a n y v e h i c l e s w i t h m y a p p l i c a t i o n A s a n a p p l i c a t i o n u s e r I s h o u l d b e a b l e t o a d d m y v e h i c l e S c e n a r i o : S u c c e s s f u l l y a d d i n g o f a v e h i c l e W h e n I a d d a v e h i c l e w i t h p l a t e n u m b e r " 1 2 3 4 D E 5 6 7 " T h e n t h e v e h i c l e w i t h p l a t e n u m b e r " 1 2 3 4 D E 5 6 7 " s h o u l d b e a v a i l a b l e
: R e g i s t e r v e h i c l e I n o r d e r t o f o l l o w m a n y v e h i c l e s w i t h m y a p p l i c a t i o n A s a n a p p l i c a t i o n u s e r I s h o u l d b e a b l e t o r e g i s t e r m y v e h i c l e S c e n a r i o : S u c c e s s f u l l y r e g i s t e r i n g o f a v e h i c l e W h e n I r e g i s t e r a v e h i c l e w i t h p l a t e n u m b e r " 1 2 3 4 D E 5 6 7 " T h e n t h e v e h i c l e w i t h p l a t e n u m b e r " 1 2 3 4 D E 5 6 7 " s h o u l d b e a v a i l a b l e Amélioration du langage commun add => register
t i o n _ _ c o n s t r u c t ( ) { $ t h i s - > v e h i c l e F l e e t = D o m a i n \ V e h i c l e F l e e t : : o f U s e r ( n e w D o m a i n \ U s e r I d ( ' u s e r ' ) ) ; } / * * * @ W h e n I r e g i s t e r a v e h i c l e w i t h p l a t e n u m b e r : p l a t e n u m b e r i n m y v e h i c l e f l e e t * / p u b l i c f u n c t i o n i R e g i s t e r A V e h i c l e W i t h P l a t e n u m b e r ( $ p l a t e n u m b e r ) { $ t h i s - > v e h i c l e F l e e t - > r e g i s t e r V e h i c l e ( $ p l a t e n u m b e r ) ; } / * * * @ T h e n t h e v e h i c l e w i t h p l a t e n u m b e r : p l a t e n u m b e r s h o u l d b e p a r t o f m y v e h i c l e f l e e t * / p u b l i c f u n c t i o n t h e V e h i c l e W i t h P l a t e n u m b e r S h o u l d B e A v a i l a b l e ( $ p l a t e n u m b e r ) { $ t h i s - > v e h i c l e F l e e t - > i s V e h i c l e P a r t O f ( $ p l a t e n u m b e r ) ; } Ok maintenant on code ! ou pas... v e n d o r / b i n / p h p s p e c d e s c " S h o u z e \ P a r k e d L i f e \ D o m a i n \ V e h i c l e F l e e t "
l e F l e e t S p e c e x t e n d s O b j e c t B e h a v i o r { p u b l i c f u n c t i o n l e t ( ) { $ t h i s - > b e C o n s t r u c t e d W i t h ( n e w U s e r I d ( ' 1 2 3 ' ) ) ; } p u b l i c f u n c t i o n i t _ r e g i s t e r _ n e w _ v e h i c l e ( ) { $ t h i s - > r e g i s t e r V e h i c l e ( ' 1 2 3 D E 4 5 ' , ' M y s p o r t c a r ' ) - > s h o u l d R e t u r n A n I n s t a n c e O f ( V e h i c l e : : c l } }
les états F e a t u r e : P a r k v e h i c l e I n o r d e r t o n o t f o r g e t w h e r e I p a r k m y v e h i c l e A s a n a p p l i c a t i o n u s e r I s h o u l d b e a b l e t o s t o r e m y v e h i c l e l o c a t i o n S c e n a r i o : S u c c e s s f u l l y p a r k i n g o f a v e h i c l e G i v e n I r e g i s t r e d m y v e h i c l e w i t h p l a t e n u m b e r " 3 4 5 6 R T 5 6 7 " W h e n I p a r k m y v e h i c l e w i t h p l a t e n u m b e r " 3 4 5 6 R T 5 6 7 " a t l o c a t i o n " 3 . 1 2 3 4 5 6 , 2 . 7 8 9 0 " T h e n t h e k n o w n l o c a t i o n o f m y v e h i c l e " 3 4 5 6 R T 5 6 7 " s h o u l d b e " 3 . 1 2 3 4 5 6 , 2 . 7 8 9 0 "
v e n I r e g i s t r e d m y v e h i c l e w i t h p l a t e n u m b e r : p l a t e n u m b e r * / p u b l i c f u n c t i o n i R e g i s t r e d M y V e h i c l e W i t h P l a t e n u m b e r ( $ p l a t e n u m b e r ) { $ t h i s - > v e h i c l e F l e e t - > r e g i s t e r V e h i c l e ( $ p l a t e n u m b e r ) ; } Mais déjà passé
v e n I r e g i s t r e d m y v e h i c l e w i t h p l a t e n u m b e r : p l a t e n u m b e r * / p u b l i c f u n c t i o n i R e g i s t r e d M y V e h i c l e W i t h P l a t e n u m b e r ( $ p l a t e n u m b e r ) { $ t h i s - > p a s t C h a n g e s [ ] = n e w V e h i c l e W a s R e g i s t r e d ( $ p l a t e n u m b e r , $ t h i s - > u s e r I d ) ; } Le passé c'est du passé
e n t h e k n o w n l o c a t i o n o f m y v e h i c l e : p l a t e n u m b e r s h o u l d b e : l o c a t i o n * / p u b l i c f u n c t i o n t h e K n o w n L o c a t i o n O f M y V e h i c l e S h o u l d B e ( $ p l a t e n u m b e r , D o m a i n \ L o c a t i o n $ l o c a t i o n ) { A s s e r t i o n : : t r u e ( $ t h i s - > v e h i c l e F l e e t - > i s V e h i c l e L o c a t e d ( $ p l a t e n u m b e r , $ l o c a t i o n ) ) ; } V e h i c l e F l e e t : : i s V e h i c l e L o c a t e d vraiment utile ? Ou du code pour le test ?
e n t h e k n o w n l o c a t i o n o f m y v e h i c l e : p l a t e n u m b e r s h o u l d b e : l o c a t i o n * / p u b l i c f u n c t i o n t h e K n o w n L o c a t i o n O f M y V e h i c l e S h o u l d B e ( $ p l a t e n u m b e r , D o m a i n \ L o c a t i o n $ l o c a t i o n ) { $ t h i s - > v e h i c l e F l e e t S h o u l d H a v e R e c o r d e d C h a n g e s ( [ n e w V e h i c l e W a s P a r k e d ( $ p l a t e n u m b e r , $ t h i s - > u s e r I d ) ] ) ; } p r i v a t e f u n c t i o n v e h i c l e F l e e t S h o u l d H a v e R e c o r d e d C h a n g e s ( a r r a y $ c h a n g e s ) { i f ( n u l l = = = $ t h i s - > v e h i c l e F l e e t H i s t o r y ) { $ t h i s - > v e h i c l e F l e e t H i s t o r y = $ t h i s - > v e h i c l e F l e e t - > p o p H i s t o r y ( ) - > t o A r r a y ( ) ; } A s s e r t i o n : : a l l C h o i c e ( $ c h a n g e s , $ t h i s - > v e h i c l e F l e e t H i s t o r y ) ; } Et voilà !
u r e : R e g i s t e r v e h i c l e I n o r d e r t o f o l l o w m a n y v e h i c l e s w i t h m y a p p l i c a t i o n A s a n a p p l i c a t i o n u s e r I s h o u l d b e a b l e t o r e g i s t e r m y v e h i c l e @ c r i t i c a l S c e n a r i o : S u c c e s s f u l l y r e g i s t r i n g o f a v e h i c l e W h e n I r e g i s t e r m y v e h i c l e w i t h p l a t e n u m b e r " 1 2 3 D E 4 5 6 " d e s c r i b e d a s " M y s p o r t c a r " T h e n t h e v e h i c l e w i t h p l a t e n u m b e r " 1 2 3 D E 4 5 6 " s h o u l d b e p a r t o f m y v e h i c l e f l e e t Même scénario mais prisme di érent.
s u i t e s : d o m a i n : f i l t e r s : { t a g s : " ~ u i " } c o n t e x t s : - D o m a i n C o n t e x t w e b : f i l t e r s : { t a g s : " c r i t i c a l , u i " } c o n t e x t s : - W e b C o n t e x t - R e z z z a \ R e s t A p i B e h a t E x t e n s i o n \ R e s t A p i C o n t e x t - R e z z z a \ R e s t A p i B e h a t E x t e n s i o n \ J s o n \ J s o n C o n t e x t e x t e n s i o n s : R e z z z a \ R e s t A p i B e h a t E x t e n s i o n \ E x t e n s i o n : r e s t : b a s e _ u r l : h t t p : / / l o c a l h o s t : 8 8 8 8 / s t o r e _ r e s p o n s e : t r u e B e h a t \ S y m f o n y 2 E x t e n s i o n : ~ @critical : scénarios critiques @ui : spé ciques à la UI v e n d o r / b i n / b e h a t - s w e b
I r e g i s t r e d m y v e h i c l e w i t h p l a t e n u m b e r : p l a t e n u m b e r * / p u b l i c f u n c t i o n i R e g i s t r e d M y V e h i c l e W i t h P l a t e n u m b e r ( $ p l a t e n u m b e r ) { $ t h i s - > u s e r I d = S h o r t U u i d : : u u i d 4 ( ) ; $ t h i s - > e v e n t S t o r e - > c o m m i t ( n e w C o m m o n \ E v e n t S o u r c i n g \ E v e n t S t r e a m ( n e w C o m m o n \ E v e n t S o u r c i n g \ E v e n t S t r e a m I d ( ' v e h i c l e - f l e e t _ ' . $ t h i s - > u s e r I d ) , [ n e w D o m a i n \ V e h i c l e W a s R e g i s t e r e d ( $ p l a t e n u m b e r , $ t h i s - > u s e r I d ) ] ) ) ; } / * * * @ W h e n I r e g i s t e r m y v e h i c l e w i t h p l a t e n u m b e r : p l a t e n u m b e r i n m y v e h i c l e f l e e t * / p u b l i c f u n c t i o n i R e g i s t e r M y V e h i c l e I n M y V e h i c l e F l e e t ( $ p l a t e n u m b e r ) { $ t h i s - > r e s t A p i B r o w s e r - > s e n d R e q u e s t ( ' P O S T ' , s p r i n t f ( ' / u s e r s / % s / v e h i c l e s ' , $ t h i s - > u s e r I d ) , j s o n _ e n c o d e ( [ ' p l a t e n u m b e r ' = > $ p l a t e n u m b e r ] ) ) ; } / * * * @ T h e n t h e v e h i c l e w i t h p l a t e n u m b e r : p l a t e n u m b e r s h o u l d b e p a r t o f m y v e h i c l e f l e e t * / p u b l i c f u n c t i o n t h e V e h i c l e S h o u l d B e P a r t O f M y V e h i c l e F l e e t ( $ p l a t e n u m b e r ) { $ t h i s - > j s o n C o n t e x t - > t h e J s o n A r r a y N o d e S h o u l d C o n t a i n E l e m e n t s ( ' v e h i c l e s ' , $ p l a t e n u m b e r ) ; }