如何为整个测试套件松露创建新的合同实例
How to create new instance of contract for whole test suite truffle
我正在使用 Solidity 和 Truffle 在以太坊网络上设置 ERC20 代币 ICO。
谁能告诉我为什么这不起作用,我有 4 个测试文件(理想情况下我希望它们尽可能简短),一个用于测试令牌,一个用于测试设置众筹的一部分,一个用于测试成功的 运行 通过(达到上限),另一个用于测试紧急停止功能。
出于这个原因,我想 运行 通过多个 it() 测试用例,这些用例使用前面的值来测试每个文件中自己的东西,即
在设置测试文件中:
首先 it() 测试合约是否已部署
第二个 it() 测试合同变量是否设置正确等。
然后我尝试在每个文件上创建令牌和合同的新实例,以便我可以 运行 通过各种测试用例。
每个文件开头为:
Token.new(initialAmount, tokenName, decimalUnits,tokenSymbol, {from: account_one});
Sale.new(softCap, hardCap, etherCostOfEachToken, account_one, token, durationInMinutes, {from: account_one});
但是,当 运行 通过我的测试时,我得到了错误:
AssertionError: State of contract was not 'Waiting approval': expected '4' to equal 1
at /Users/jackpickering/Desktop/Development/Capped_ICO/test/4Crowdsale_EmergencyStop_Test.js:28:14
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)
成功众筹测试文件 运行 完成后,状态尚未重置回 1,因此,Sale.new() 行不能正常工作。
有更好的方法吗?我错过了什么吗?
提前致谢。
我收到此错误的原因是因为我没有等到合约部署到网络,而是将它们更改为在异步函数中执行并使用 'await' 函数等待直到合同被部署,然后再进行其余的测试。
我的工作代码如下:
it("should create new token", async function() {
token = await Token.new(initialAmount, tokenName, decimalUnits,tokenSymbol)
supply = await token.totalSupply();
assert.equal(supply, 10000000, "New crowdsale was not created");
});
it("should create new crowdsale", async function() {
sale = await Sale.new(softCap, hardCap, etherCostOfEachToken, account_one, Token(token), durationInMinutes);
state = await sale.getState();
assert.equal(state, 1, "New crowdsale was not created");
});
我正在使用 Solidity 和 Truffle 在以太坊网络上设置 ERC20 代币 ICO。
谁能告诉我为什么这不起作用,我有 4 个测试文件(理想情况下我希望它们尽可能简短),一个用于测试令牌,一个用于测试设置众筹的一部分,一个用于测试成功的 运行 通过(达到上限),另一个用于测试紧急停止功能。
出于这个原因,我想 运行 通过多个 it() 测试用例,这些用例使用前面的值来测试每个文件中自己的东西,即
在设置测试文件中:
首先 it() 测试合约是否已部署
第二个 it() 测试合同变量是否设置正确等。
然后我尝试在每个文件上创建令牌和合同的新实例,以便我可以 运行 通过各种测试用例。
每个文件开头为:
Token.new(initialAmount, tokenName, decimalUnits,tokenSymbol, {from: account_one});
Sale.new(softCap, hardCap, etherCostOfEachToken, account_one, token, durationInMinutes, {from: account_one});
但是,当 运行 通过我的测试时,我得到了错误:
AssertionError: State of contract was not 'Waiting approval': expected '4' to equal 1
at /Users/jackpickering/Desktop/Development/Capped_ICO/test/4Crowdsale_EmergencyStop_Test.js:28:14
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)
成功众筹测试文件 运行 完成后,状态尚未重置回 1,因此,Sale.new() 行不能正常工作。
有更好的方法吗?我错过了什么吗?
提前致谢。
我收到此错误的原因是因为我没有等到合约部署到网络,而是将它们更改为在异步函数中执行并使用 'await' 函数等待直到合同被部署,然后再进行其余的测试。
我的工作代码如下:
it("should create new token", async function() {
token = await Token.new(initialAmount, tokenName, decimalUnits,tokenSymbol)
supply = await token.totalSupply();
assert.equal(supply, 10000000, "New crowdsale was not created");
});
it("should create new crowdsale", async function() {
sale = await Sale.new(softCap, hardCap, etherCostOfEachToken, account_one, Token(token), durationInMinutes);
state = await sale.getState();
assert.equal(state, 1, "New crowdsale was not created");
});