我正在为solidity契约进行单元测试,但在使用同一契约的不同示例时遇到了问题。我正在测试的功能如下:
bool ended;
function auctionEnd() public {
require(now >= auctionEndTime, "Auction has not yet ended.");
require(ended == false, "Auction has already been ended.");
ended = true;
emit AuctionEnded(highestBidder, highestBid);
}
我创建了两个不同的已部署契约示例来测试两个不同的场景( auctionEnd
功能在两种情况下表现相同,但合同中的其他功能将不同):
contract("Auction", (accounts) => {
describe("One or more bidding", async() => {
let auctionInstance, startingBidInput;
beforeEach(async () => {
startingBidInput = web3.utils.toWei("1", "ether");
// the first parameter is the auction time limit
auctionInstance = await Auction.deployed(300, startingBidInput);
})
it("End auction", async () => {
// this progressed the time to be later than the auction end time
const advancement = 600;
await helper.advanceTimeAndBlock(advancement);
let tx = await auctionInstance.auctionEnd({ from: accounts[0] });
assert.isTrue(tx.receipt.status, "auctionEnded status is not true");
})
})
describe("No bidding", async() => {
let noBidAuctionInstance, startingBidInput2;
beforeEach(async () => {
startingBidInput2 = web3.utils.toWei("1", "ether");
noBidAuctionInstance = await Auction.deployed(300, startingBidInput2);
})
it("End no bid auction", async () => {
const advancement = 600;
await helper.advanceTimeAndBlock(advancement);
let tx = await noBidAuctionInstance.auctionEnd({ from: accounts[0] });
assert.isTrue(tx.receipt.status, "auctionEnded status is not true");
})
})
})
当我执行测试时,我得到以下错误 let tx = await noBidAuctionInstance.auctionEnd({ from: accounts[0] });
:
错误:返回错误:处理事务时vm异常:还原拍卖已结束。-给出的理由:拍卖已经结束。。
我很困惑,因为我使用了两个不同的合同示例 auctionInstance
及 noBidAuctionInstance
和 auctionEnd
功能 noBidAuctionInstance
只调用了一次。是 ended
两个示例之间共享的属性?
暂无答案!
目前还没有任何答案,快来回答吧!