Contrato – Parte 8

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.

Scroll to Top
September Redeem to NEAR
This is default text for notification bar