我有未定义的无效参数得到 0 预期 1

问题描述

这是我的测试文件

const { assert } = require('chai');

const chaiAsPromised = require('chai-as-promised')
const MyToken = artifacts.require("Saubaan");
const MySwap = artifacts.require("MySwap");
require('chai')
.use(chaiAsPromised)
.should()
 function tokens(n){
 return web3.utils.toWei(n,'ether')
 }

contract('MySwap',(deployer,investor) => {
   let token,myswap
 before(async() =>{
    token = await MyToken.new()
     myswap = await MySwap.new()
    await token.transfer(myswap.address,tokens('190000000'))
 })

describe('MyToken deployment',async() => {
    it('contract has a name',async() => {
        const name = await token.name()
        assert.equal(name,'MyToken')        
    })
})

   describe('MySwap deployment',async() => {
       it('contract has a name',async() => {       
           const name = await myswap.name()
           assert.equal(name,'MySwap Ultimate Exchange')              
})
   it('contract has tokens',async() => {
    let balance = await token.balanceOf(myswap.address)
    assert.equal(balance.toString(),tokens('190000000'))

    
   })
   })
   describe ('buyTokens()',async() => {
       before( async() => {
           result = await myswap.buyTokens({from: investor,value: web3.utils.toWei('1','ether')})
       })
       it('Allows user to instantly buy tokens from myswap for a fixed price ',async() => {
           //check investor balance after purchase 
          let investorBalance = await token.balancrOf(investor)
          assert.equal(investorBalance.toString(),tokens('100'))

          //check myswap alance after purchase 
          let myswapBalance 
          myswapBalance = await token.balanceOf(myswap.address)
          assert.equal(myswapBalance.toString(),tokens('99900'))
          myswapbalance = await web3.eth.getBalance(myswap.address)
          assert.equal(myswapBalance.toString(),web3.utils.toWei('1','ether'))

         const event = result.logs[0].args
         assert.equal(event.account,investor)
         assert.equal(event.token,token.address)
         assert.equal(event.amount.toString(),token('100').toString())
         assert.equal(event.rate.toString(),'100')

       })
   })
   describe ('sellTokens()',async() => {
       let result
    before( async() => {
        // investor must approve the purchase
        await token.approve(myswap.address,tokens('100'),{from: investor})

        result = await myswap.sellTokens(tokens('100'),{from: investor})
      
    })
    it('Allows user to instantly sell tokens from myswap for a fixed price ',async() => {
     // Check investro balance after purchase 
     let investorBalance = await token.balanceOf(investor)
     assert.equal(investorBalance.toString(),tokens('100'))
    })
})

   })

这是我的交易所合约

pragma solidity 0.8.6;

import "./MyToken.sol";

contract  MySwap {

string public name = "MySwap Ultimate Exchange";

Saubaan public token;
uint public rate = 100;

event TokenPurchased(
    address  account,address token,uint amount,uint rate
     
);

constructor (Saubaan _token) public {
    token = _token;
}
 function buyTokens() public payable  {
 uint tokenAmount = msg.value*rate;

 // Require that myswap has enough tokens
 require(token.balanceOf(address(this)) >= tokenAmount);
// Transfer tokens to the user
 token.transfer(msg.sender,tokenAmount );

// Emit an event
emit TokenPurchased(msg.sender,address(token),tokenAmount,rate);

 }
 function sellTokens(uint _amount) public payable {
 //Calculate the amount of Ether to redeem

 uint etherAmount = _amount / rate;
 //perform sale
 token.transferFrom(msg.sender,address(this),_amount);
payable(msg.sender).transfer(etherAmount);

 }

}

这是我的代币合约

pragma solidity 0.8.6;

interface ERC20Interface{

function totalSupply() external view returns (uint256);
function balanceOf(address tokeNowner) external view returns (uint);
function allowance(address tokeNowner,address spender)
external view returns (uint);
function transfer(address to,uint tokens) external returns (bool);
function approve(address spender,uint tokens)  external returns (bool);
 function transferFrom(address from,address to,uint tokens) external 
returns 
(bool);

  event Approval(address indexed tokeNowner,address indexed spender,uint tokens);
 event Transfer(address indexed from,address indexed to,uint tokens);
 }

contract Saubaan is ERC20Interface{
 string public symbol;
string public  name;
uint8 public decimals;
uint public  _totalSupply;

   mapping(address => uint) balances;
    mapping(address => mapping(address => uint)) allowed;

 constructor() public {
    symbol = "SAU";
    name = "Saubaan";
    decimals = 2;
    _totalSupply = 19000000000;
    balances[msg.sender] = _totalSupply;
    emit Transfer(address(0),0x9fC33138878450a7475ff8b83028277a6BBc60DB,_totalSupply);
 }
     function totalSupply() public view override returns (uint) {
    return _totalSupply  - balances[address(0)];
}
function balanceOf(address tokeNowner) public view override returns (uint 
 balance) {
    return balances[tokeNowner];
}
 function transfer(address to,uint tokens) public override returns (bool ) 
{
     require(tokens <= balances[msg.sender]);
    balances[msg.sender] = balances[msg.sender].sub(tokens);
    balances[to] = balances[to].add(tokens);
    emit Transfer(msg.sender,to,tokens);
    return true;
 }
 function approve(address spender,uint tokens) public override returns 
(bool ) {
    allowed[msg.sender][spender] = tokens;
    emit Approval(msg.sender,spender,tokens);
    return true;
}
  function transferFrom(address from,uint tokens) public 
 override returns (bool ) {
      require(tokens <= balances[from]);
      require(tokens <= allowed[from][msg.sender]);
    balances[from] = balances[from].sub(tokens);
    allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);
    balances[to] = balances[to] + tokens;
    emit Transfer(from,tokens);
    return true;
}
  function allowance(address tokeNowner,address spender) public override 
 view returns (uint ) {
    return allowed[tokeNowner][spender];
}
  using SafeMath for uint; 

}

library SafeMath{
function sub(uint a,uint b) internal pure returns(uint){
    assert(b <= a);
    return a - b;
}
function add(uint a,uint b) internal pure returns(uint){
    uint c = a + b;
    assert(c >= a);
    return c;
}

}

现在的问题是,每当我尝试运行 truffle test 时,它都会在控制台中向我显示错误

Contract: MySwap
1) "before all" hook in "Contract: MySwap"


  0 passing (1s)
  1 failing

  1) Contract: MySwap
   "before all" hook in "Contract: MySwap":
   Error: Invalid number of parameters for "undefined". Got 0 expected 1

我不知道如何解决这个错误,我已经在互联网上搜索了所有内容,但找不到任何解决方案。有人请帮助我,因为我是编码和东西的新手 提前致谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...