松露是区块链公司ConsenSys的子公司。它为以太坊区块链开发了开源区块链开发环境和测试框架。最近,Microsoft与Truffle宣布建立合作伙伴关系,以将区块链开发人员工具引入Microsoft Azure生态系统。这两个组织正在进行的投资包括用于测试的本地区块链节点,以及提供测试数据,智能合约编写以及持续部署,调试和测试。使用Chainlink时,功能强大的开发工具可以帮助您将智能合约成功地部署在链上。 Truffle旨在提供一个易于使用的dApp框架,以帮助开发人员更好地进行其dApp开发工作。松露非常易于使用,并且松露盒的特性决定了您可以直接在终端上下载dApp模板。为了帮助您使用Chainlink,我们提供了Chainlink Truffle Box模板。它包含名为“ MyContract”的链链接智能合约的示例。和预制的测试套件。首先,您需要打开终端并安装Truffle。 npm install truffle -g接下来,创建一个新目录,并使用以下命令从框中获取Chainlinked示例协定:mkdir Chainlinkcd Chainlinktruffle unbox smartcontractkit / chainlink取消装箱后,您会发现将自动创建一些新目录。它包含许多非常有用的示例代码,可以帮助您快速启动Chainlinked智能合约的开发。在本文中,我们将主要介绍“ MyContract”合同。可以在* contracts *目录中找到代码文件。 ##测试首先,测试合同以确保一切正常。您可以使用以下命令执行此操作:npm test这将在示例合同上运行各种测试用例,例如创建带有和不带有LINK令牌的请求,将这些请求发送到oracle合同地址,以及测试合同所有权。 *注意:对于某些LINK令牌合约,您可能会遇到各种编译警告。这是因为创建合同时我们使用的是最新的Solidity编译器版本,而不是编译器版本,因此我们可以忽略这些警告。 LINK令牌合同已经部署,我们只希望将这些合同提供给本地测试。 *请注意,在每次测试运行后,我们都会重新部署每份合同。这样我们就可以执行真实的单元测试。我们不希望我们的测试依赖于其他测试的输出。此外,重新部署每个合同需要花费时间,但这仅是出于测试目的,不会影响我们的实际性能运行时间。现在,让我们看一下“ MyContract”的这些测试案例的更多细节,您可以在* test / MyContract_test.js *下找到它们。如果您以前使用过Mocha.js,则会发现语法非常熟悉。松露基于Mocha测试框架,并具有智能合约的独特功能。让我们看一些新功能。定义MyContract合同使用的变量。请注意,jobId值是演示的占位符,而不是实际的JobId。您可以在此处找到真正可用的JobId。 contract()函数的功能类似于Mocha中describe()函数所实现的功能,但是它结合了Truffle中的无尘室功能。 Truffle的文档对此进行了解释:-在运行每个contract()函数之前,您的合同将重新部署到以太坊网络,并且其中的测试将在原始合同状态下运行。 -contract()函数提供了可用于编写测试的可用帐户列表。另外,我们的示例“ MyContract”需要其他智能合约的输出。为此,我们将使用artifacts.require()方法,该方法实际上将特定智能合约的输出作为合约抽象导入。此数据存储为JSON二进制对象,Truffle可以使用该对象来查看。在此处阅读有关artifacts.require()如何工作的更多信息。辅助合同被存储为常量引用,现在我们可以开始创建测试用例了。为此,我们需要正确理解关键测试方法,例如* describe(),beforeEach(),it()和context()*。 -* describe()*允许我们将测试用例组合在一起。它需要两个参数,第一个是测试组名称的字符串,第二个是回调函数。此方法涉及的测试用例是创建请求,完成请求,取消请求以及检索LINK。 -* beforeEach()*在每个单独的测试范围之前运行。对于许多测试,在运行测试用例之前,必须执行一些操作(例如,等待链LINK的传输)。 -* it()*用于单个测试用例。这些用于测试我们在不同状态下的合同并阐明他们想要完成的任务。您会注意到,当我们运行npm test时,每个* it()f参数中的字符串