Testing
如何在嘗試測試我的契約時解決問題
我是區塊鏈開發的新手,無法弄清楚我做錯了什麼。這是我的智能合約選舉:
pragma solidity ^0.5.0; contract Election { struct Candidate { uint id; string name; uint votecount; } mapping (uint => Candidate) public candidates; uint public candidateCount; constructor() public { a=5; addCandidate("Candidate 1"); addCandidate("Candidate 2"); } function addCandidate (string memory _name) private { candidateCount++; candidates[candidateCount]=Candidate(candidateCount,_name,0); } }
這是一個 javascript 文件,用於測試是否正好有兩個候選者:
var elec=artifacts.require("./Election.sol"); contract("Election",function(accounts){ it("initialised with two candidates", function(){ var a; return Election.deployed().then(function(instance) { return instance.candidateCount.call(); }).then(function(count){ assert.equal(count.toNumber(),2); }); }); });
這是我得到的錯誤。有人請幫忙。
改變這個:
var elec = artifacts.require("./Election.sol");
對此:
var Election = artifacts.require("./Election.sol");
或這個:
Election.deployed()
對此:
elec.deployed()
請注意,
artifacts.require
將契約名稱作為輸入,而不是文件路徑。因此,您可以擺脫傳遞給它的字元串中的
./
部分和.sol
部分。