React: TestUtils.renderIntoDocument рд╡реИрдз рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдкрд░ `рдЕрд╢рдХреНрдд` рджреЗрддрд╛ рд╣реИред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 10 рдЕрдкреНрд░реИрд▓ 2019  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react

рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдореИрдВ рдПрдХ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬрдм рд╡реИрдз рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХ TestUtils.renderIntoDocument рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЕрд╢рдХреНрдд рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдмрдврд╝рд╛рддрд╛ рд╣реИред

рдбреЗрдореЛ
рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдХ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: https://codesandbox.io/s/1zpvll4j24

рддреИрдпрд╛рд░ рдирдореВрдирд╛ рдШрдЯрдХреЛрдВ рдХреЗ TestUtils.renderIntoDocument рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред

рд╕рдорд╛рдзрд╛рди
рд╕рдорд╛рдзрд╛рди рдЬреЛ SFC рдФрд░ FC рджреЛрдиреЛрдВ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдШрдЯрдХ рдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓рдкреЗрдЯрддрд╛ рд╣реИ:

const FCCounter = () => {
  const [count, setCount] = useState(0);

  return (
    <div>
      <div>{count}</div>
      <button onClick={() => setCount(count + 1)}>+1</button>
    </div>
  );
};

TestUtils.renderIntoDocument(
  <div>
    <FCCounter />
  </div>
);

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?

  • рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ - рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ред

рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдХреЗ рдХреМрди рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИрдВ?
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг: 16.8.6

Test Utils Question

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХреЛрдВ рдХреЗ рдкрд╛рд╕ рдХреЛрдИ instances , рддреЛ рдЖрдк рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗ

TestUtils.renderIntoDocument(<FCCounter/>)

рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдпреЗ?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЛрдЯреЗ рддреМрд░ рдкрд░, рдЖрдк рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдЖрдВрддрд░рд┐рдХ 'рд╡рд┐рдзрд┐рдпреЛрдВ' рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк forwardRef / useImperativeHandle (https://reactjs.org/docs/hooks-reference.html#useimperativehandle) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдБ рдЖрдк рд╕рднреА рдХреЛ рдкрд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдХреНрд▓рд╛рд╕рд┐рдХ рдШрдЯрдХ рдХреЗ рд╕рд╛рде TestUtils.renderIntoDocument рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ state , props рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ рдФрд░ setState рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШрдЯрдХ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рддреЛ, рдореБрдЭреЗ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдереА TestUtils.renderIntoDocument рд╡рд╛рдкрд╕ рд▓реМрдЯрдиреЗ рдХреА рдХреЛрдИ рд╡рд╕реНрддреБ рдореБрдЭреЗ state , props рдФрд░ setState рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗред

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

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

@DeividasBakanas рдлрд╝рдВрдХреНрд╢рди рдШрдЯрдХреЛрдВ рдореЗрдВ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдк рдмрдЯрди рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдШрдЯрдирд╛ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд╛рдЬреНрдп рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛ред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ TestUtils.renderIntoDocument (рд╡рд░реНрдЧ рдШрдЯрдХреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рд╕реЗ рд▓реМрдЯрд╛рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ рднреА рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИред

рдЬреИрд╕реЗ @trueadm рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдШрдЯрдХ рдХреЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдкрдбреЗрдЯ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП https://github.com/kentcdodds/react-testing-library рдЬреИрд╕реЗ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХреЗред рдХреЗрдВрдЯ рд╡рд┐рд╖рдп рдкрд░ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реЗрдВрдЧреЗред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрдЧ / рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдкреНрд░рд╢реНрди рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

zpao picture zpao  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kocokolo picture kocokolo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tleunen picture tleunen  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zpao picture zpao  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

UnbearableBear picture UnbearableBear  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ