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.
Connect Your Wallet

What is a Wallet?
Safely store and transfer your crypto and NFTs.
No need to create new accounts or credentials. Connect your wallet and you are good to go!