Testing

如何在嘗試測試我的契約時解決問題

  • December 24, 2020

我是區塊鏈開發的新手,無法弄清楚我做錯了什麼。這是我的智能合約選舉:

   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部分。

引用自:https://ethereum.stackexchange.com/questions/91486