本文主要是介绍truffle 进行智能合约测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考资料:
以太坊区块链开发 truffle 入门教程 1_哔哩哔哩_bilibili
快速入门 Truffle | Truffle 中文文档 - DApp 开发框架 | 深入浅出区块链 (learnblockchain.cn)
1.安装
- 下载node.js 利用npm 下载truffle : npm install -g truffle
- 安装vscode 插件、
下载完成会多一个这个标志,然后点进去,会让检测让你下载几个东西,按照提示下载即可。
- 安装本地Ganache
打开之后点击新建,
记住端口号,后面连接会用到。
2.部署
1.新建一个目录,打开终端输入 truffle init
目录结构自上往下,依次是存放合约、存放合约迁移文件,存放合约测试文件、truffle配置文件。
2.利用vscode打开,新建Test.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.4 <=0.9;contract Test {uint x;constructor(uint x0) {x = x0;}function setX(uint x1) public {x = x1;}function getX() public view returns (uint) {return x;}
}
3.新建 1_deploy_contract.js(多个迁移文件,开头必须加数字,表明迁移顺序)
const Test = artifacts.require("Test");module.exports = function (deployer) {deployer.deploy(Test, 1);
}
默认情况没有,创建新连接,连接本地Ganache
4.创建 一个新连接,选第一个,再选local,输入我们上文本地创建的Ganache端口号,点击回车。
出现这个表明 成功。
5.修改truffle-config.js 配置, 下面 的port对应也是本地Ganche
6.在终端输入 truffle compile
接着输入,truffle migrate ,控制台出现下面,本地ganache出现日志代表部署成功。
3.测试
接着上文,新建1_test.js
const Test = artifacts.require("Test");contract("Test test", () => {it("This is Test File!", async () => {const Test1 = await Test.deployed();await Test1.setX(2);const x = await Test1.getX();assert(x.toString() == "2", "failed test!")})
})
执行truffle test ,出现下面,证明测试成功。
4.使用truffle develop 进行部署
我们安装truffle之后,有一个内置的的个人模拟区块链,不需要连接本地Ganache。
区别与上文编辑连接配置,直接 控制台输入 truffle develop ,会进入truffle 控制台。
在truffle 控制台执行compile ,migrate 、test命令 会跟上文有同样的效果。
5. 错误解决
1.
你truffle 配置文件的编译器版本和你测试合约要求编译器版本不适应。
2.
像下方await 表名他是一个异步操作,返回一个promise对象,以及我们调用合约中的函数,在js测试文件都是异步操作,函数 加async 关键字, await修饰。
9545: {host: "127.0.0.1", // Localhost (default: none)port: 9545, // Standard Ethereum port (default: none)network_id: "5777", // Any network (default: none)confirmations: 2 // 先加这个参数,然后他会报错之后取消就可以了},
3.
反正吗,这种配置文件及相关全弄好了,就是报错,我的打印了账户之后,又重新执行了就没报错了。
这篇关于truffle 进行智能合约测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!