Contrato – Parte 8

To Share and +4 nLEARNs

Agora que finalizamos nosso contrato, é hora de escrevermos alguns testes. Testes podem ser feitos localmente, como faremos, e também podem ser feitos utilizando a Near CLI que é uma ótima prática antes de fazer o deploy de seu contrato de fato.
Vá na pasta *sandbox-ts/src/main.ava.ts* e remova todos os testes criados por padrão quando criamos um projeto. Seu arquivo deve ficar assim:

import { Worker, NearAccount } from 'near-workspaces';
import anyTest, { TestFn } from 'ava';

const test = anyTest as TestFn<{
  worker: Worker;
  accounts: Record<string, NearAccount>;
}>;

test.beforeEach(async (t) => {
  // Inicia el worker y comienza un servidor Sandbox
  const worker = await Worker.init();

  // Implementa el contrato
  const root = worker.rootAccount;
  const contract = await root.createSubAccount('test-account');
  // Obtén la ruta del archivo wasm desde el script de prueba package.json en la carpeta superior
  await contract.deploy(
    process.argv[2],
  );

  // Guarda el estado para las ejecuciones de prueba, es único para cada prueba
  t.context.worker = worker;
  t.context.accounts = { root, contract };
});

test.afterEach.always(async (t) => {
  // Detén el servidor Sandbox
  await t.context.worker.tearDown().catch((error) => {
    console.log('Failed to stop the Sandbox:', error);
  });
});

Resumidamente, antes de cada teste(beforeEach) estamos criando um worker, que é o executor dos nossos testes, criando uma conta teste e fazendo o deploy do contrato em uma sub conta da mesma. Após cada execução de cada teste(afterEach), nós vamos encerrar nosso worker, o que irá limpar o estado do mesmo.
Estamos fazendo isso para garantir que sempre teremos um ambiente “limpo” para a execução de cada teste, para que cada um ocorra de forma isolada sem interferir nos demais. Não alteraremos essas partes.

Generate comment with AI 2 nL
Scroll to Top