Assert.equal 在 运行 Truffle 测试时不可用
Assert.equal is not available when running Truffle Tests
我有一个简单的合约,我正在尝试在 Truffle 中为该合约编写 Solidity 测试。以下是代码示例 -
File: dummycontract.sol
pragma solidity ^0.4.17;
contract DummyContract {
uint[] public elements;
function addElement(uint element) public {
elements.push(element);
}
function getNumberOfElements() public view returns(uint) {
uint numElements = uint(elements.length);
return numElements;
}
}
和测试文件 -
pragma solidity ^0.4.17;
import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/dummycontract.sol";
contract TestZombieFactory {
function testInitialState() public {
DummyContract dummyContract = DummyContract(DeployedAddresses.DummyContract());
uint numberOfElements = dummyContract.getNumberOfElements();
Assert.equal(numberOfElements == 0);
}
}
在 运行 truffle test
上,我收到以下错误 -
TypeError: Member "equal" is not available in type(library Assert) outside of storage.
Assert.equal(numberOfElements == 0);
有人可以给我解释一下吗?
您对 Assert.equal()
的用法不正确。它需要两个值并在函数内进行比较。函数签名是
function equal(uint A, uint B, string message) constant returns (bool result)
将您的测试合同更改为以下内容,它将起作用。
pragma solidity ^0.4.17;
import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/dummycontract.sol";
contract TestZombieFactory {
function testInitialState() public {
DummyContract dummyContract = DummyContract(DeployedAddresses.DummyContract());
uint numberOfElements = dummyContract.getNumberOfElements();
Assert.equal(numberOfElements, 0, "Number of elements should be 0");
}
}
你应该替换
Assert.equal(numberOfElements == 0);
和
Assert.equal(numberOfElements,0);
我有一个简单的合约,我正在尝试在 Truffle 中为该合约编写 Solidity 测试。以下是代码示例 -
File: dummycontract.sol
pragma solidity ^0.4.17;
contract DummyContract {
uint[] public elements;
function addElement(uint element) public {
elements.push(element);
}
function getNumberOfElements() public view returns(uint) {
uint numElements = uint(elements.length);
return numElements;
}
}
和测试文件 -
pragma solidity ^0.4.17;
import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/dummycontract.sol";
contract TestZombieFactory {
function testInitialState() public {
DummyContract dummyContract = DummyContract(DeployedAddresses.DummyContract());
uint numberOfElements = dummyContract.getNumberOfElements();
Assert.equal(numberOfElements == 0);
}
}
在 运行 truffle test
上,我收到以下错误 -
TypeError: Member "equal" is not available in type(library Assert) outside of storage.
Assert.equal(numberOfElements == 0);
有人可以给我解释一下吗?
您对 Assert.equal()
的用法不正确。它需要两个值并在函数内进行比较。函数签名是
function equal(uint A, uint B, string message) constant returns (bool result)
将您的测试合同更改为以下内容,它将起作用。
pragma solidity ^0.4.17;
import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/dummycontract.sol";
contract TestZombieFactory {
function testInitialState() public {
DummyContract dummyContract = DummyContract(DeployedAddresses.DummyContract());
uint numberOfElements = dummyContract.getNumberOfElements();
Assert.equal(numberOfElements, 0, "Number of elements should be 0");
}
}
你应该替换
Assert.equal(numberOfElements == 0);
和
Assert.equal(numberOfElements,0);