рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореВрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдзреБрдирд┐рдХ рдкрд░реНрдпрд╛рд╡рд░рдг

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдПрдХреНрд╕рдкреЛ- рдХреНрд▓реА , рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ , рдФрд░ рдЬреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

рдЖрдзреБрдирд┐рдХ рдЙрдкрдХрд░рдг рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд╣рдо рд╡реАрд╕реА рдХреЛрдб рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рд╣рдореЗрдВ рдСрдЯреЛ-рдкреВрд░реНрдг рд╕реЗрд╡рд╛, рдХреЛрдб рдиреЗрд╡рд┐рдЧреЗрд╢рди рдФрд░ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдЧрд╛ред

рдПрдХреНрд╕рдкреЛ рдПрдХ рдЯреВрд▓рдХрд┐рдЯ рд╣реИ рдЬреЛ рдореВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рдЪрд╛рд░ рджреЗрдЧрд╛ рдХрд┐ рдЖрдк рдПрдХреНрд╕рдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рджреЗрд╢реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред



рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдпрд╛рд░реНрди рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдпрд╛рд░реНрди рдЧреНрд▓реЛрдмрд▓ рдРрдб рдПрдХреНрд╕рдкреЛ-рдХреНрд▓реА

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдиреЗрдЯрд┐рд╡ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЦрд╛рд▓реА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред

~ / рдПрдХреНрд╕рдкреЛ init exampleApp
? рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЪреБрдиреЗрдВ: рдПрдХреНрд╕рдкреЛ-рдЯреЗрдореНрдкреНрд▓реЗрдЯ-рдЦрд╛рд▓реА-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдХреГрдкрдпрд╛ рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдорд╛рди рджрд░реНрдЬ рдХрд░реЗрдВред
? рдпрд╛рд░реНрди v1.15.2 рдорд┐рд▓рд╛ред рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ? рд╣рд╛рдВ

рдЕрдм рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реЙрдиреНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

cd exampleApp
рдпрд╛рд░реНрди рдХреА рд╢реБрд░реБрдЖрдд

рдХреНрд╖рд╛рд░ рд╡рд┐рдиреНрдпрд╛рд╕


рдЖрдЗрдП, VSCode рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдВрдкрд╛рджрдХ рдХрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tslint рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЪрд░рдг рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджреЗрдЦреЗрдВред рдпрд╣ рдПрдХ рд╕рдорд╛рди рдХреЛрдб рд╢реИрд▓реА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЛ рд░реЛрдХреЗрдЧрд╛ред

рдкрд╣рд▓реЗ рд╣рдо рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ tslint рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
рдпрд╛рд░реНрди рдЧреНрд▓реЛрдмрд▓ рдРрдб tslint

рдЕрдЧрд▓рд╛ рд╣рдо tslint рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ:
tslint - рдЗрдирд┐рдЯ

рдпрд╣ рдХрдорд╛рдВрдб tslint.json рдлрд╛рдЗрд▓ рдХреЛ рдирд┐рдореНрди рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдмрдирд╛рдПрдЧреА:

{ "extends": ["tslint:recommended"], "jsRules": {}, "rules": {}, "rulesDirectory": [] } 

рдЕрдЧрд▓рд╛, рд╣рдо рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ:
tslint 'src / ** / *ред ts'

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╡реА.рдПрд╕. рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдХреЛрдб рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдРрдк рд╡рд┐рдХрд╛рд╕ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЯрд╛рдЗрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╛рд░реНрди рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЗрди рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдпрд╛ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдХреЗ рдЪрд░рдг рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 "scripts": { "lint": "tslint '*.ts*'" } 

Tslint рднреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдореЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рд╣рдо рдЧреВрдврд╝ рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреЛ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред

рдпрд╛рд░реНрди рдЬреЛрдбрд╝рдиреЗ tslint-eslint- рдирд┐рдпрдо --рджреЗрд╡

Tslint рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдПрдХ рдкреНрд▓рдЧрдЗрди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд▓рдЧрдЗрди рдирд╛рдо рдХреЛ "рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд" рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

 "extends": [ "tslint:recommended", "tslint-eslint-rules" ] 

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдЬреЗрд╕реНрдЯ рдФрд░ рдкрд░реАрдХреНрд╖рдг


рдЬреЗрд╕реНрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рд╣реИред рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореВрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг, рд╕рдорд░реНрдерди рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдорд░реНрдерди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдбрдмреЗрд╕ рдХреЛ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред

рдпрд╛рд░реНрди рдЬреЛрдбрд╝ --рджреЗрд╡ рдЬреЗрд╕реНрдЯ рдЯреАрдПрд╕-рдЬреЗрд╕реНрдЯ @ рдкреНрд░рдХрд╛рд░ / рдЬреЗрд╕реНрдЯ

рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рднреА рд╣реИ:

  • ts-jest - рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреЗрд╕реНрдЯ рдХреЛрдб рдХреЗ рд╕рдВрдХрд▓рди рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП
  • @ рдкреНрд░рдХрд╛рд░ / рдЬреЗрд╕реНрдЯ - рдЬреЗрд╕реНрдЯ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдкрд░реАрдХреНрд╖рдг-рдкреБрд╕реНрддрдХрд╛рд▓рдп - рдбреЛрдо рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП

рдФрд░ рдЕрдВрддрд┐рдо рдЪрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рдмрдирд╛рдирд╛ рд╣реИ:

рдпрд╛рд░реНрди ts-jest config: init

рдпрд╣ рдХрдорд╛рдВрдб рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реЗ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рд╣рдо рдЗрд╕реЗ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдиреЗрдЯрд┐рд╡ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

 module.exports = { jest: { preset: "react-native", transform: { "^.+\\.js$": "./node_modules/react-native/jest/preprocessor.js", "\\.(ts|tsx)$": "ts-jest" }, globals: { "ts-jest": { tsConfig: "tsconfig.json" } }, moduleFileExtensions: ["ts", "tsx", "js"], testRegex: "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$" } }; 

рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рдкреИрдХреЗрдЬ рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЯреЗрд╕реНрдЯ: рдпрд╛рд░реНрди рдЯреЗрд╕реНрдЯ

рдЬреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯ рд▓рд┐рдЦрдирд╛


рдЖрдЗрдП рдЬреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдореВрдирд╛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ App.test.tsx рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВрдЧреЗ:

 export const helloFn = (name?: String = "World") => `Hello, ${$name}`; describe("hello function", () => { it("should return `hello world`", () => { expect(helloFn()).toEqual(`Hello, World`); }); it("should return `hello name`", () => { expect(helloFn("Zuck")).toEqual(`Hello, Zuck`); }); }); 

рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдпрд╛рд░реНрди рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 yarn test PASS ./App.test.tsx hello function тЬУ should return `hello world` (4ms) тЬУ should return `hello name` (1ms) Test Suites: 1 passed, 1 total Tests: 2 passed, 2 total Snapshots: 0 total Time: 1.316s Ran all test suites. Done in 2.74s. 

рдпрджрд┐ рдЖрдк рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЖрдк рдЕрднреА рднреА рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдЪрд▓реЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореВрд▓ рдШрдЯрдХреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВред

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

рдпрд╛рд░реНрди рдРрдб-рдбреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдкрд░реАрдХреНрд╖рдг-рд░реЗрдВрдбрд░рд░

рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдо App.tsx рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдЕрдкрдиреА App.test.tsx рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

 import React from "react"; import renderer from "react-test-renderer"; import App from "./App"; describe("App", () => { it("should display welcome message", () => { const tree = renderer.create(<App />); expect(tree.toJSON()).toMatchSnapshot(); expect(tree.root.findByType("Text").children).toContain( "Open up App.tsx to start working on your app!" ); }); }); 

рд╣рдо рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдореВрд▓ рдШрдЯрдХреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рдЯреЗрдХреНрд╕реНрдЯ рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рдмрд╛рд▓ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рдХреА рд╣реИред рдпрд╣ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдиреЗрдЯрд┐рд╡ рдкреИрдХреЗрдЬ рдХрд╛ рдПрдХ рдореВрд▓ рдШрдЯрдХ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕реНрдЯреИрдХ рдиреЗ рд╣рдореЗрдВ рдореВрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИред рд╕реНрдереИрддрд┐рдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рдмрдирд╛рддрд╛ рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдордЬрдмреВрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рднреА рдХреЛрдбрд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИред

рдЬреЗрд╕реНрдЯ рдХреЗ рднреАрддрд░ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдиреЗрдЯрд┐рд╡ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдХрд╛рд╕ рдмрд┐рд▓реНрдХреБрд▓ рдирд┐рдпрдорд┐рдд рд░рд┐рдПрдХреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореВрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

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


All Articles