Mandos概述
原文:https://docs.elrond.com/developers/mandos-reference/overview
Mandos JSON 测试的原理、描述和功能
【Mandos是谁?
根据《魔戒》维基:(“监狱堡垒”)是一个阿伊努人,阿拉塔尔人之一,以及一个瓦拉负责审判所有死去精灵的灵魂(或法)。他也有责任在manw下宣布 Eru Ilúvatar 的末日和判决。他的真名是 Námo (“秩序者”或“法官”),但后来被精灵称为Mandos,以他的神圣的Mandos大厅命名,他掌管着那里,那里是精灵被杀死后的去处。Mandos也是评判智能合约的一个框架的名字,这再合适不过了,尤其是因为它们在许多方面也是不朽的。
## 理**
在智能合约开发过程中,开发者能够轻松编写单元和集成测试是非常重要的。
简短的单元测试可以使用编写合约所用的语言和工具,但是为了在现实场景中测试合约,我们至少需要一个区块链模拟和一些指定执行场景的方法。
Mandos既适用于检查交易如何改变存储的短期测试,也适用于长期复杂的场景。
事实上,它是用 JSON 这样的描述性语言表达的,这使得它与开发智能合约的语言无关。
运行测试
在编写本文档时,Mandos测试可以直接从Elrond VSCode 扩展的上下文菜单中启动。
Mandos-Golang vs Mandos-rs
Mandos规范目前有两种实现方式。
-
MandosGolang是Elrond虚拟机的一部分,它与虚拟机完全集成,并运行实际的智能合约代码。这是两者的最新版本。
-
Mandos-rs 是集成到
elrond-wasm
Rust 智能合约框架中的一个实现。它模仿一切,包括 VM 和 WebAssembly 引擎。它对于调试智能合约和生成合约的高级覆盖率非常有用。Mandos-rs 还没有完全实现,ESDT 规范的部分内容还没有实现,还有一些合约到合约的调用。
开发者只需要编写一次Mandos测试,但是他们可以根据需要在两个系统上运行。用 mandos-go 运行测试是很重要的。用 mandos-rs 运行它们也很方便,但并不重要。
测试文件扩展名
Mandos场景文件应该以.scen.json
结尾,其中“scen”来自“scenario”。框架使用双扩展来识别要运行的测试。任何其他扩展名都将被忽略。
另一方面,还有一种更老的格式现在已经被废弃了,其中测试文件名以.test.json
结尾,但是你不应该担心它。**