我已经写了一个以太坊智能合约在坚实的语言。为了测试,我可以使用Ganache运行一个本地节点,并使用truffle迁移
在其上部署我的合同。
我想用JavaScript测试我的合同。我想为每个测试创建一个新的契约实例。
我在我的项目中创建了一个测试文件test/test.js
:
const expect = require('chai').expect
const Round = artifacts.require('Round')
contract('pledgersLength1', async function(accounts) {
it('1 pledger', async function() {
let r = await Round.deployed()
await r.pledge(5)
let len = (await r.pledgersLength()).toNumber()
expect(len).to.equal(1)
})
})
contract('pledgersLength2', async function(accounts) {
it('2 pledgers', async function() {
let r = await Round.deployed()
await r.pledge(5)
await r.pledge(6)
let len = (await r.pledgersLength()).toNumber()
expect(len).to.equal(2)
})
})
我运行它与松露测试
。它基本上是摩卡,但是松露通过与智能合同的JavaScript连接为您定义了工件
。
松露<代码>合同功能和摩卡的<代码>描述功能几乎一样,有一个我不明白的小变化!我假设合同
会使我的合同每次都是新的。它没有。也许我可以使用像new圆桌会议()
这样的东西来代替Round.deployed()
,但我只是不知道如何使用。
解决方案不必使用块菌。
请注意,. new
和.部署
是不一样的。看看我在这里发现了什么。
按照这个例子,它应该可以解决你的问题:
// Path of this file: ./test/SimpleStorage.js
var simpleStorage = artifacts.require("./SimpleStorage.sol");
contract('SimpleStorage', function(accounts) {
var contract_instance;
before(async function() {
contract_instance = await simpleStorage.new();
});
it("owner is the first account", async function(){
var owner = await contract_instance.owner.call();
expect(owner).to.equal(accounts[0]);
});
});
。new
关键字将在新上下文中部署合同实例。
但是,。部署的
实际上将使用您之前部署的契约,即当您使用truffle迁移
命令时。
在单元测试的上下文中,最好使用。新建
,以便您始终从新合同开始。
以太坊测试链 针对Ethereum以太坊有许多专用测试网络或者叫测试链,他们由各种客户端支持。 1.Rinkeby:只支持geth客户端。 2.Kovan:只支持Parity客户端。 3.Ropsten:支持geth和Parity客户端。 对于开发,建议你使用Rinkeby或KoVan测试链。这是因为他们使用的工作量证明POA共识机制,确保交易和块能够一致并及时的创建。Ropsten测试链,虽然最
我已经创建了自定义区块链使用去以太网 我的网络有2个矿工节点与解锁帐户,然后一个公共节点与锁定帐户,只广播交易的矿工 我这样运行公共节点: 问题是,如果有人将合同创建发送到公共节点(例如使用MyEtherWallet),合同提交将被广播和挖掘。 我发现:https://ethereum.stackexchange.com/questions/11091/is-there-any-way-to-di
根据以下链接:https://stackoverflow.com/a/20056622/1623597 https://stackoverflow.com/a/15640575/1623597TestNG不会在每个方法测试中创建新实例。 我有spring boot应用程序。我需要编写集成测试(控制器、服务、存储库)。有时为了创建新的测试用例,我需要数据库中的一些实体。为了忘记数据库中任何预定义的实
以太坊(Ethereum)是一个支持智能合约的区块链平台,它与比特币最大的不同是,以太坊通过一个虚拟机(EVM)可以运行智能合约。 以太坊是Vitalik Buterin(维塔利克·布特林,人称V神)在2013年提出的概念,Vitalik最早参与了比特币社区的开发,并希望比特币把功能受限的脚本扩展成图灵完全的编程环境,但没有得到比特币开发社区的认同,于是他决定另起炉灶,打造一个新的区块链平台,目标
我是斯卡拉诺布。 我目前尝试使用specs2为基于Play(Scala)的web应用程序创建功能测试。示例本身很简单,即: 我想实现的是为每个示例提供一组定义的测试数据,其中一些数据已经保留在数据库中。因此,我需要围绕每个示例进行设置和拆卸方法,以准备用例类,用适当的数据填充它并保留其中的一些数据,以便该示例可以从定义的数据库状态开始。最终,我想要一个插件机制,其中插件为一组示例定义了测试数据(将
问题内容: 我的Spring-Boot-Mvc-Web应用程序在文件中具有以下数据库配置: 这是我所做的唯一配置。我在任何地方都没有进行任何其他配置。尽管如此,Spring和子系统会在每次Web应用程序运行时自动重新创建数据库。即在系统运行时重新创建数据库,而在应用程序结束后它包含数据。 我不了解此默认值,并期望它适合测试。 但是,当我开始运行测试时,我发现数据库仅重建一次。由于没有按预定义的顺序