¿Cómo defino mi token para pasar la prueba de la trufa?

Después de ejecutar la prueba de trufa, aparece el siguiente error:

Zanes-iMac:xyztoken zanemassey$ truffle test
Using network 'development'.

Compiling ./contracts/Migrations.sol...
Compiling ./contracts/xyzToken.sol...

Compilation warnings encountered:

/Users/zanemassey/Desktop/xyztoken/contracts/Migrations.sol:11:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
  function Migrations() public {
  ^ (Relevant source part starts here and spans across multiple lines).
,/Users/zanemassey/Desktop/xyztoken/contracts/xyzToken.sol:8:2: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
    function xyzToken (uint256 _initialSupply) public {
 ^ (Relevant source part starts here and spans across multiple lines).



  Contract: xyzToken
    1) sets the total supply upon deployment
    > No events were emitted


  0 passing (36ms)
  1 failing

  1) Contract: xyzToken
       sets the total supply upon deployment:
     ReferenceError: xyzToken is not defined
      at Context.<anonymous> (test/xyzToken.js:7:3)
      at /usr/local/lib/node_modules/truffle/build/webpack:/packages/truffle-core/lib/testing/testrunner.js:135:1
      at /usr/local/lib/node_modules/truffle/build/webpack:/~/web3/lib/web3/property.js:119:1
      at /usr/local/lib/node_modules/truffle/build/webpack:/~/web3/lib/web3/requestmanager.js:89:1
      at /usr/local/lib/node_modules/truffle/build/webpack:/packages/truffle-provider/wrapper.js:134:1
      at XMLHttpRequest.request.onreadystatechange (/usr/local/lib/node_modules/truffle/build/webpack:/~/web3/lib/web3/httpprovider.js:128:1)
      at XMLHttpRequestEventTarget.dispatchEvent (/usr/local/lib/node_modules/truffle/build/webpack:/~/xhr2/lib/xhr2.js:64:1)
      at XMLHttpRequest._setReadyState (/usr/local/lib/node_modules/truffle/build/webpack:/~/xhr2/lib/xhr2.js:354:1)
      at XMLHttpRequest._onHttpResponseEnd (/usr/local/lib/node_modules/truffle/build/webpack:/~/xhr2/lib/xhr2.js:509:1)
      at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/truffle/build/webpack:/~/xhr2/lib/xhr2.js:469:1)
      at endReadableNT (_stream_readable.js:1081:12)
      at process._tickCallback (internal/process/next_tick.js:63:19)

Si no se emitieron eventos, ¿qué está fallando exactamente?

este es mi js:

var DappToken = artifacts.require("./xyzToken.sol");

contract('xyzToken', function(accounts) {
    var tokenInstance;

    it('sets the total supply upon deployment', function() {
        return xyzToken.deployed().then(function(instance) {
          tokenInstance = instance;
          return tokenInstance.totalSupply();
        }).then(function(totalSupply) {
          assert.equal(totalSupply.toNumber(), 600000000, 'sets the total supply to 600,000,000');
          return tokenInstance.balanceOf(accounts[0]);
        }).then(function(adminBalance) {
          assert.equal(adminBalance.toNumber(), 600000000, 'it allocates the inital supply to the admin account');
        });
    });
});

y solidez:

pragma solidity ^0.4.23;

contract xyzToken {
    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    function xyzToken (uint256 _initialSupply) public {
        balanceOf[msg.sender] = _initialSupply;
        totalSupply = _initialSupply;
    }
}

He afirmado el suministro total para el número y el saldo administrativo y he configurado cuentas de ganache con una matriz asociativa. ¿Qué es exactamente lo que no está definido sobre mi token?

Cualquier ayuda sería apreciada

Respuestas (1)

La línea superior de su javascript es incorrecta. Llamó al artefacto DappTokenpero trató de crear una instancia con xyzToken, que no está definido, y de ahí el error que está recibiendo.

Además, considere cambiar a async/await como se muestra a continuación: hace que las pruebas sean mucho más fáciles a la vista:

const DappToken = artifacts.require("./xyzToken.sol");

contract('xyzToken', accounts => {

  it('sets the total supply upon deployment', async () => {
    const tokenInstance = await DappToken.deployed()
        , initSupply    = 600000000
        , totalSupply   = await tokenInstance.totalSupply()
        , adminBalance  = await tokenInstance.balanceOf(accounts[0])
    assert.equal(totalSupply.toNumber(), initSupply, `Total supply should be ${initSupply}!`)
    assert.equal(adminBalance.toNumber(), initSupply, 'Initial supply should be allocated to admin account!')
  })
})