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!