コモクリアーは、統合されますインテグラー


ファラギャララ!NOS Artigos Teroriiores Criamos Dois Componentes E Ma Fun Media To o O , Testamos Cada - uma das partes de forma isolada , Criando Testes que s o o conhecidos como testes unit by rios
Theo isso Funciona Junto、パラシュートで降下することができます.

コンフェクヌスアパリカ


モグラの変わり目について

連続的なデonde Paramos vocrepositório Eファーザーcheckout NAブランチexercise-04 .
クリオオーArquivoApp.test.js デロンデsrc E adicione o seguinte :
import { render } from "@testing-library/react";
import App from "./App";

test("shows the amount in brazilian real after submit", () => {
  render(<App />);
});
コマンドウを実行するnpm test -- --watch , E . seguaは、o Arquivoを叫びますApp.js デロンデsrc .
const App = () => null;

export default App;
<資料>
  • Renderiza OSコンポーネントFormHighlight ;
  • 情報としての有識者の言説
  • Informaの巣は、es enoのenviadasパラシュートで降下する人馬のAPI que retorna cota
  • 楽しい味方multiply O ' valor pela cota
  • OラヴァルRortornadoペラ楽しいmultiply エウロウド・エ・エ・エウリュラドゥの構成要素
  • オルタナとしてのファシズムApp.test.js :
    import { render, screen } from "@testing-library/react";
    import userEvent from "@testing-library/user-event";
    import App from "./App";
    
    test("shows the amount in brazilian real after submit", () => {
      render(<App />);
    
      userEvent.type(screen.getByLabelText(/valor/i), "3000");
      userEvent.selectOptions(screen.getByLabelText(/moeda/i), "USD");
      userEvent.click(screen.getByRole("button", { name: /calcular/i }));
    
      expect(screen.getByText("14808.9")).toBeInTheDocument();
    });
    
    デッサ・フォーム、APrender , Preenchido com Oの形式userEvent E APは、o oのcliqueをo o o o o o o a o o o o o o o o o o o a o o a o o a o a o a o a o a o a o a o a o a o a o a o a o a o a o a o a o a o a o a o a o a o a o a o a o o a o a o a o a o a o o o a o o
    <研究ノート>
    TestingLibraryElementError: Unable to find a label with the text of: /valor/i
    
    パラ・テス・パス『アウグラ』としてのファールApp.js :
    import Form from "./components/Form";
    import Highlight from "./components/Highlight";
    
    const App = () => {
      const handleSubmit = () => null;
    
      return (
        <>
          <Form onSubmit={handleSubmit} />
          <Highlight value="14808.90" />
        </>
      )
    };
    
    アゴラプリサマーズO C Cディックディゴ、パラque Tha Hahaの実装者.パラアイソ、VamosAPI de Cotações de Moedas パラシュートで降下する人は、Cotaです.

    フェラトラ


    オルタナとしてのファシズムApp.js .
    import { useState } from "react";
    import Form from "./components/Form";
    import Highlight from "./components/Highlight";
    import { multiply } from './utils/math'
    
    const App = () => {
      const [value, setValue] = useState(null);
    
      const handleSubmit = async ({ value, coin }) => {
        const res = await window.fetch(
          `https://economia.awesomeapi.com.br/json/last/${coin}-BRL`
        );
        const data = await res.json();
    
        const result = multiply(data[`${coin}BRL`].ask, value).toFixed(2);
        setValue(result);
      };
    
      return (
        <>
          <Form onSubmit={handleSubmit} />
          <Highlight value={value} />
        </>
      )
    };
    
    エサ・オルタナhandleSubmit envia os dados,os valore e armazena o valor em um estado,exatamente como descreveemos antesを乗算します.
    <研究ノート> Deveriam Estar Passando , Mas n Trio O est est O , Repare que aparecem v Are Rias Mensagens de Erro , e - uma delas es essa :
    TypeError: window.fetch is not a function
    
    Isoso aconteceポルノos睾丸は、実行しますNode.js , <研究ノート>オーマの経営者に関する一考察Fetch API .
    パラレゾルバ・エスソ著『ポリ・フィル』について
    npm install --save whatwg-fetch
    
    APは、Instalaに属しますInstalaは、oですjest.config.js :
    setupFiles: [require.resolve('whatwg-fetch')],
    
    ソフィストにおけるスーザンの思想fetch アンビエントデティスト<武井>fetch nは、aparecemのmais、oはニコの問題は、oテスターfalhando、mas jのvvosリゾルバisso.

    TestoのFluxosロバ


    ONDE Oテスターファルハを観察する
    > 12 |   expect(screen.getByText("14808.90")).toBeInTheDocument();
    
    タンブを観察するdiv オンデO Valor deveria estar , Eest - Mol Vazia :
    <body>
      <div>
        <form>...</form>
        <div />
      </div>
    </body>
    
    nenhum valor foi exibido porque oexpect FOI Executado Antes daレステシは、o serの結論を得ます.パラレゾルバIsoso、予測子ファーザーduas alteraは、es . es . esです.
    Primeiro , O - Bloo do teste deve ser ass nnono :
    test("shows the amount in brazilian real after submit", async () => {
      render(<App />);
    
    E Segundoは、asserの巣は、o deve ser feitaのapを主張します.Podemos USARの検索結果findBy アオ・インgetBy , 質問は、Tipo sを非難します.
    expect(await screen.findByText("14808.90")).toBeInTheDocument();
    

    クリプトアムモックパラフェッチAPI


    Nesse Momento , Provvelvelte o o Teste est est falhando , e eu eu falo provavelmente porque es algo incertoEstamos fazendo umレクサスは、oパラマAPI外面、queレトルーナバレスque mudam constantemente oを得ます.
    Nesse TipoデTeste、nは、デdevemos nos fazerである.耳鼻咽喉科O , AOfetch アルゴの前の前奏曲mock .
    デッサVaz vamosの利用zo todo spyOn デトロイトド beforeAll . Adicione seguinteリンハアンテスda楽しいtest いいえArquivoApp.test.js :
    beforeAll(() => jest.spyOn(window, "fetch"));
    
    O spyOn フォーチュア・パトリーダ・コム jest.fn , エドゥードゥum objeto、o nomeはmを所有していますfunção mock , セグンテッツ・アッサー・ソウルズとしてのPermitindo Fazzer
    expect(window.fetch).toHaveBeenCalledWith(
      "https://economia.awesomeapi.com.br/json/last/USD-BRL"
    );
    expect(window.fetch).toHaveBeenCalledTimes(1);
    
    <研究ノート>ポルノOにおける第二次世界大戦fetch 元の連続した仙洞chamado.<研究ノート> A・N・A・A・A・A mockImplementationOnce パラDefinir馬の実装者はfetch . アダージョo seguinte cは、dioを歌いますrender いいえ、
    window.fetch.mockImplementationOnce(() => Promise.resolve({
      ok: true,
      json: async () => ({
        USDBRL: { ask: "4.9363" },
      }),
    }));
    
    デッサ・ホルム、アオ・イン・デ・シャンfetch オリジナルは、楽しい小胞体o que passamosmockImplementationOnce チャーダ・セO est Cona com um m to todo chamado mockResolvedValueOnce アシュアモノ・デ・ファザーにおける「統語的糖」
    window.fetch.mockResolvedValueOnce({
      ok: true,
      json: async () => ({
        USDBRL: { ask: "4.9363" },
      }),
    });
    
    feito isso,osはdevem voltar a passarを精査する

    エルロ・ナ・レクサス


    パラテスターは、API retorna um erro、podemos criar um teste parecido com oの前部、diferenのパーセンテージであるNesseカソ、API API retorna - uma mensagem de erro e verificamse se essa mensagem est - do sendo exibidaを意味します.
    test("renders an error message from the server", async () => {
      const testError = "test error";
      render(<App />);
    
      window.fetch.mockResolvedValueOnce({
        ok: false,
        json: async () => ({ message: testError }),
      });
    
      userEvent.type(screen.getByLabelText(/valor/i), "3000");
      userEvent.selectOptions(screen.getByLabelText(/moeda/i), "USD");
      userEvent.click(screen.getByRole("button", { name: /calcular/i }));
    
      expect(await screen.findByRole("alert")).toHaveTextContent(testError);
    });
    
    パラ・テス・パース『アウグラ』としてのFAApp.js
    const App = () => {
      const [value, setValue] = useState(null);
      const [error, setError] = useState(null);
    
      const handleSubmit = async ({ value, coin }) => {
        const res = await window.fetch(
          `https://economia.awesomeapi.com.br/json/last/${coin}-BRL`
        );
        const data = await res.json();
    
        if (!res.ok) {
          setError(data.message);
          return;
        }
    
        const result = multiply(data[`${coin}BRL`].ask, value).toFixed(2);
        setValue(result);
      };
    
      return (
        <>
          <Form onSubmit={handleSubmit} />
          <Highlight value={value} />
          {error ? <div role="alert">{error}</div> : null}
        </>
      )
    };
    

    結論


    Nerse Artigo、Criamosは、Integra Ses Astro o o para Verificar SE Os Componentes que foram desenvolvidos NOS Artigos Tereniores FuncionamユントスエムUma Aplica Sesplo o o、Adicionamos Suporte ParpフェッチAPI e mais uma vez criamos mocksです.
    エムAplicaは、フロントエンド、testes単位は、rios e testesデIntegra Sys Astro O s s o o Beam Parecidos、Diferen Smareであります.
    エサは、アルゴqueエゴgostando bastanteデfazer、エスパロque este conteによってestejaアジャダドをしてください.
    コスモデコスチュームrepositório パラコムCディルディゴーフェイトネッセアーティゴー.アブラは、o!