TON Blockchain Сourse #FREEDUROV
737 subscribers
17 photos
73 videos
30 files
127 links
для связи @Aleksey_Leon

#freedurov
Download Telegram
Вызов метода получения

Нам нужно будет создать еще один метод в оболочке нашего контракта, а именно — метод getData , который будет запускать метод получения нашего контракта и возвращать результаты, которые мы имеем в хранилище c4.

Вот как будет выглядеть наш метод получения:

async getData(provider: ContractProvider) {
const { stack } = await provider.get("get_the_latest_sender", []);
return {
recent_sender: stack.readAddress(),
};
}


Как и в нашем случае с отправкой внутреннего сообщения — мы используем провайдера и его методы. В данном случае мы используем метод get . Затем мы читаем адрес из полученного stack и в результате возвращаем его.

Написание тестов

Вот и все. Мы выполнили всю подготовительную работу и теперь напишем собственно тестовую логику. Вот как будет выглядеть наш тестовый сценарий:

1. Отправляем и внутреннее сообщение
2. Мы гарантируем, что отправка прошла успешно
3. Мы вызываем метод получения контракта и проверяем, что вызов прошел успешно.
4. Мы сравниваем результаты, полученные от метода получения, с адресом from , который мы установили в исходном внутреннем сообщении.

Кажется довольно простым и выполнимым! Давай сделаем это.

Команда Sandbox предоставила нам еще одну замечательную утилиту для тестирования. Мы можем установить дополнительный пакет @ton-community/test-utils, запустив yarn add @ton-community/test-utils -D

Это позволит нам использовать .toHaveTransaction для средства сопоставления jest, чтобы добавить дополнительных помощников для упрощения тестирования. Нам также нужно будет импортировать этот пакет в наш test/main.spec.ts после установки.

Давайте посмотрим, как выглядит наш тестовый код, основанный на описанном выше сценарии.

import { Cell, toNano } from "ton-core";
import { hex } from "../build/main.compiled.json";
import { Blockchain } from "@ton-community/sandbox";
import { MainContract } from "../wrappers/MainContract";
import "@ton-community/test-utils";

describe("main.fc contract tests", () => {
it("should get the proper most recent sender address", async () => {
const blockchain = await Blockchain.create();
const codeCell = Cell.fromBoc(Buffer.from(hex, "hex"))[0];

const myContract = blockchain.openContract(
await MainContract.createFromConfig({}, codeCell)
);

const senderWallet = await blockchain.treasury("sender");

const sentMessageResult = await myContract.sendInternalMessage(
senderWallet.getSender(),
toNano("0.05")
);

expect(sentMessageResult.transactions).toHaveTransaction({
from: senderWallet.address,
to: myContract.address,
success: true,
});

const data = await myContract.getData();

expect(data.recent_sender.toString()).toBe(senderWallet.address.toString());
});
});


Мы используем функциональность Jest, чтобы убедиться, что:

- отправка внутреннего сообщения прошла успешно
- метод получения прошел успешно
- метод получения возвращает некоторый результат
- адрес, возвращаемый методом получения, равен тому, который мы использовали в нашем сообщении, устанавливая адрес отправителя

Мы также переименовали «наш первый тест» в «должен получить правильный последний адрес отправителя», мы хотим, чтобы имена наших тестов всегда были читабельными.

Запуск тестов

Вуаля! Мы готовы провести наши тесты. Просто запустите нашу команду yarn testв терминале, и если вы все сделали вместе со мной, вы получите аналогичный результат:

PASS tests/main.spec.ts
main.fc contract tests
✓ should get the proper most recent sender address (444 ms)

Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 4.13 s, estimated 5 s


И последнее, что мы хотим сделать, это убедиться, что каждый раз, когда мы запускаем тесты, мы также запускаем наш сценарий компилятора. Это полезно для эффективности нашей работы. Большая часть работы по разработке заключается в написании функционального кода и последующем запуске тестов. Давайте упростим это:

Обновите файл package.json , чтобы он выглядел следующим образом:
{
... our previous package.json keys
"scripts": {
... previous scripts keys
"test": "yarn compile && yarn jest"
}
}

На следующем уроке мы собираемся построить наш конвейер развертывания и узнать, как протестировать реальный контракт развертывания в сети.
Media is too big
VIEW IN TELEGRAM
3.5 Развертывание смарт-контракта
✔️ Так же смотрите видео на YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1👨‍💻1
3.5 Развертывание смарт-контракта.pdf
490.4 KB
📚Конспекты лекций на русском
3.5 Развертывание смарт-контракта
👎3👍1
Media is too big
VIEW IN TELEGRAM
3.6 Гибкое развертывание из тестовой сети в основную
✔️ Так же смотрите видео на YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻11
3_6_Гибкое_развертывание_из_тестовой_сети_в_основную.pdf
155.4 KB
📚Конспекты лекций на Русском
3.6 Гибкое развертывание из тестовой сети в основную
3_4_Рабочий_процесс_тестирования_и_написание_тестов.pdf
456.5 KB
📚Конспекты лекций
3.4 Рабочий процесс тестирования и написание тестов
3_3_Написание_простого_функционального_контракта.pdf
218.2 KB
📚Конспекты лекций
3.3 Написание простого функционального контракта
3_2_Настройка_рабочего_процесса_компиляции.pdf
270.6 KB
📚Конспекты лекций
3.2 Настройка рабочего процесса компиляции
3_1_Обзор_жизненного_цикла_разработки_смарт_контрактов.pdf
213 KB
📚Конспекты лекций
3.1 Обзор жизненного цикла разработки смарт-контрактов
4.1 контракт со встречной логикой_.pdf
175.4 KB
❗️Конспект лекции на Русском
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
4_2_тесты_для_встречного_контракта.pdf
211.1 KB
❗️Конспект лекции на Русском
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
👎2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Media is too big
VIEW IN TELEGRAM
4.1 Контракт со встречной логикой
✔️ Так же смотрите видео на YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
2👨‍💻1
Media is too big
VIEW IN TELEGRAM
4.2 Тесты для встречного контракта
✔️ Так же смотрите видео на YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Media is too big
VIEW IN TELEGRAM
4.3 Контракт с логикой ввода_вывода средств
✔️ Так же смотрите видео на YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Media is too big
VIEW IN TELEGRAM
4.4 Тесты на логику пополнения_вывода средств
✔️ Так же смотрите видео на YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Media is too big
VIEW IN TELEGRAM
4.5 использование Blueprint для развертывания контрактов
✔️ Так же смотрите видео на YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM