Ich habe eine Solidity-Funktion wie die unten,
pragma solidity ^0.4.24;
pragma experimental ABIEncoderV2;
contract Funding {
function sum(uint input1, uint input2) public returns (uint) {
return input1 + input2;
}
struct patient{
uint id;
string fullName;
mapping(uint => string[]) DoctorAccess;
}
function getPatient(uint patientId, uint doctorId) public returns (string[]) {
patient p;
p.id = 1;
p.fullName="Saran";
p.DoctorAccess[doctorId].push("Doctor1Key");
return p.DoctorAccess[doctorId];
}
}
Die Zusammenstellung des Codes sieht gut aus. Daher habe ich einen Testfall für den obigen wie unten angegeben erstellt.
pragma solidity ^0.4.24;
pragma experimental ABIEncoderV2;
import "truffle/Assert.sol";
import "../contracts/Funding.sol";
contract FundingTest {
function testSum() public {
Funding f= new Funding();
Assert.equal(f.sum(1,2),3," two plus one should be three");
}
function test_getPatient() public {
Funding f = new Funding();
string[] doctorKeys;
doctorKeys.push("Doctor1Key");
Assert.equal(f.getPatient(1,1),doctorKeys, "The doctor mapping should be a valid one");
}
}
Wenn ich versuche, den Testfall auszuführen, erhalte ich den folgenden Fehler
,/H/ethereum/PM/test/FundingTest.sol:18:9: TypeError: Member „equal“ nicht gefunden oder nicht sichtbar nach argumentabhängiger Suche in type(library Assert) Assert.equal(f.getPatient(1, 1),doctorKeys, "Die Arztzuordnung sollte gültig sein");
Ist der obige Testfall falsch oder gibt es etwas, das angegangen werden muss.
Die equal-Methode in Soliditys Assert unterstützt keine Arrays.
Wie hier erwähnt, müssten Sie für jeden Eintrag im Array eine separate Assert.equal-Anweisung erstellen.
Saravanan