I have 3 contracts: sender, receiver and transferTest. I am getting error in transferTest due to an address array declared in the reciver contract:
receiver.sol:
pragma solidity ^0.5.8;
contract receiver{
address public owner;
mapping(address => uint) balance;
constructor () public{
owner = msg.sender;
}
function() external payable{
balance[owner] += msg.value;}
}
transferTest:
pragma solidity ^0.5.8;
import "truffle/Assert.sol";
import "../contracts/sender.sol";
import "../contracts/receiver.sol";
contract TestTransfer{
function testTransfer() public{
sender senderObj = new sender();
receiver receiverObj = new receiver();
senderObj.transferTo(msg.sender, 10);
Assert.equal(receiver.balance[receiver.owner], 9, "Received amount is not correct");
}
}
I am getting following error message:
testingTransfer.sol:12:20: TypeError: Member "balance" not found or
not visible after argument-dependent lookup in type(contract
receiver).
Assert.equal(receiver.balance[receiver.owner], 9, "Received amount is not correct");
^————–^Compilation failed. See above. Truffle v5.1.67 (core: 5.1.67) Node
v10.23.3
Also I used msg.sender for the address of receiver contract as the first argument of transferTo function. Please guide me how to replace msg.sender with the address of receiver contract.
==Update:Dec11 2021
My question is similar to:
Accessing Solidity Mapping
Zulfi.
Best Answer
The
balancew
isn't public so it can't be accessed from the outsideIf it were public you would be able to access like a function with the keys as parameters.
From truffle's console
A fixed version of
TestTransfer
should look like