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

рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрд╡реЗрджрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдпрд╛рд░реНрди рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
рдпрд╛рд░реНрди рдЧреНрд▓реЛрдмрд▓ рдРрдб рдПрдХреНрд╕рдкреЛ-рдХреНрд▓реАрдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдиреЗрдЯрд┐рд╡ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЦрд╛рд▓реА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред
~/ expo init exampleApp ? Choose a template: expo-template-blank-typescript Please enter a few initial configuration values. Read more: https://docs.expo.io/versions/latest/workflow/configuration/ ┬╖ 100% completed ? Yarn v1.15.2 found. Use Yarn to install dependencies? Yes
рдЕрдм рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
cd exampleApp
рдпрд╛рд░реНрди рдХреА рд╢реБрд░реБрдЖрддрдХреНрд╖рд╛рд░ рд╡рд┐рдиреНрдпрд╛рд╕
рд╣рдо VSCode рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдВрдкрд╛рджрдХ рдХрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tslint рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЪрд░рдг рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджреЗрдЦреЗрдВрдЧреЗред рдЗрд╕ рддрд░рд╣ рд╣рдо рдПрдХ рд╕рдорд╛рди рдХреЛрдб рд╢реИрд▓реА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рд░реЛрдХреЗрдВрдЧреЗред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ tslint рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
рдпрд╛рд░реНрди рдЧреНрд▓реЛрдмрд▓ рдРрдб tslintрдЕрдЧрд▓рд╛, tslint рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдПрдВ:
tslint - рдЗрдирд┐рдЯрдпрд╣ рдХрдорд╛рдВрдб tslint.json рдлрд╛рдЗрд▓ рдХреЛ рдирд┐рдореНрди рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдмрдирд╛рдПрдЧреА:
{ "extends": ["tslint:recommended"], "jsRules": {}, "rules": {}, "rulesDirectory": [] }
рдЕрдЧрд▓рд╛, рд╣рдорд╛рд░реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ:
tslint 'src / ** / *ред ts'рдЙрд╕рдХреЗ рдмрд╛рдж, рд╡реА.рдПрд╕. рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдХреЛрдб рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЯрд╛рдЗрдк рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдВрдЧреАред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╛рд░реНрди рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЬреЛрдбрд╝реЗрдВред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдпрд╛ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдХреЗ рдЪрд░рдг рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
"рд▓рд┐рдкрд┐рдпреЛрдВ": {
"рд▓рд┐рдВрдЯ": "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)$" } };
рдФрд░ рдЕрдВрдд рдореЗрдВ, package.json рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЬреЛрдбрд╝реЗрдВ:
рдЯреЗрд╕реНрдЯ: рдпрд╛рд░реНрди рдЯреЗрд╕реНрдЯрд╣рдо рдЬреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╣реИрдВ
рдЖрдЗрдП рдЬреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВред 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.
рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рд░рд╣реЗред рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдШрдЯрдХреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рд╣рдореЗрдВ рдПрдХ рдФрд░ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА -
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдкрд░реАрдХреНрд╖рдг-рд░реЗрдВрдбрд░рд░ред рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рддрд┐рдкрд╛рджрди рдЗрдВрдЬрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд░рдЪрдирд╛ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рдбреЛрдо рдпрд╛ рджреЗрд╢реА рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдпрд╛рд░реНрди рдРрдб-рдбреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдкрд░реАрдХреНрд╖рдг-рд░реЗрдВрдбрд░рд░рдЗрд╕рдХреЗ рдмрд╛рдж, 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!" ); }); });
рд╣рдо рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдореВрд▓ рдШрдЯрдХреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдЯреИрдЧ рд╕реЗ рдмрдЪреНрдЪреЛрдВ рдХрд╛ рдПрдХ рд╕рд░рдгреА рдорд┐рд▓рд╛ рд╣реИред рдпрд╣ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдиреЗрдЯрд┐рд╡ рдкреИрдХреЗрдЬ рдХрд╛ рдПрдХ рдореВрд▓ рдШрдЯрдХ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕реНрдЯреИрдХ рдиреЗ рд╣рдореЗрдВ рдореВрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рд╕реНрдереИрддрд┐рдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рдмрдирд╛рддрд╛ рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдордЬрдмреВрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рднреА рдХреЛрдбрд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИред
рд░рд┐рдПрд╕реНрдЯ рдиреЗрдЯрд┐рд╡ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЗрд╕реНрдЯ рдХреЗ рдЕрдВрджрд░ рдЯреЗрд╕реНрдЯ рд╡рд┐рдХрд╛рд╕ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рдирд┐рдпрдорд┐рдд рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореВрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред