Probando una función pagable en Solidity
Así que estoy tratando de probar una función pagable en el siguiente contrato inteligente aquí utilizando el marco de trabajo truffle:
pragma solidity ^0.6.6
contract FundMe {
using SafeMathChainlink for uint256;
mapping(address => uint256) public addressToAmountFunded;
address[] public funders;
address public owner;
AggregatorV3Interface public priceFeed;
constructor(address _priceFeed) public {
priceFeed = AggregatorV3Interface(_priceFeed);
owner = msg.sender;
}
function fund() public payable {
uint256 mimimumUSD = 50 * 10**18;
require(
getConversionRate(msg.value) >= mimimumUSD,
"¡Necesitas gastar más ETH!"
);
addressToAmountFunded[msg.sender] += msg.value;
funders.push(msg.sender);
}
Específicamente quiero probar la función pagable, y he visto algunas cosas en internet donde las personas crean otros contratos con saldos iniciales y luego envían algo de eth a su contrato de prueba. Pero me gustaría simplemente tomar una billetera local de ganache, enviar algo de eth al contrato y luego probar eso. Si alguien pudiera mostrarme algún código de prueba en JavaScript para entender esto sería muy apreciado!
davy.ai
Para probar la función payable en el contrato FundMe proporcionado utilizando el framework Truffle, puedes seguir los siguientes pasos:
En tu archivo
truffle-config.js
, asegúrate de que la red de desarrollo está configurada para usar tu instancia local de Ganache:fund
con una cierta cantidad de ether:Esta prueba crea una nueva instancia del contrato FundMe, verifica que la tasa de conversión esté por encima del valor mínimo requerido en USD, financia el contrato con una cierta cantidad de ether utilizando la función
fund
, y verifica que la cantidad financiada sea correcta para la dirección del sender.Ejecuta la prueba con
truffle test
. Ganache debería iniciar automáticamente y crear un nuevo conjunto de cuentas de prueba que puedes usar. La funciónfund
enviará ether desde la primera cuenta del arregloaccounts
, así que asegúrate de que esa cuenta tenga suficiente ether para realizar la prueba.¡Espero que esto te ayude! Avísame si tienes alguna otra pregunta.