Error: VM Exception while processing transaction: revert (in the context of testing)

Hi,
I am trying to execute a test given at:
https://medium.com/@kscarbrough1/writing-solidity-unit-tests-for-testing-assert-require-and-revert-conditions-using-truffle-2e182d91a40f

I am trying to run the test using truffle. At the "test" command, I get following errors:


truffle(development)> test
Using network 'development'.

Compiling .\contracts\Mycontract5.sol...
Compiling .\test\TestMyContract5.sol...
Compiling truffle/Assert.sol...
Compiling truffle/DeployedAddresses.sol...


TestMyContract5
1) testTheThrow
> No events were emitted
2) testNoThrow
> No events were emitted


0 passing (2s)
2 failing

1) TestMyContract5
testTheThrow:
Error: VM Exception while processing transaction: revert
at Object.InvalidResponse (C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\~\web3\lib\web3\errors.js:38:1)
at C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\~\web3\lib\web3\requestmanager.js:86:1
at C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\truffle-provider\wrapper.js:134:1
at XMLHttpRequest.request.onreadystatechange (C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\~\web3\lib\web3\httpprovider.js:128:1)
at XMLHttpRequestEventTarget.dispatchEvent (C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\~\xhr2\lib\xhr2.js:64:1)
at XMLHttpRequest._setReadyState (C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\~\xhr2\lib\xhr2.js:354:1)
at XMLHttpRequest._onHttpResponseEnd (C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\~\xhr2\lib\xhr2.js:509:1)
at IncomingMessage. (C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\~\xhr2\lib\xhr2.js:469:1)
at IncomingMessage.EventEmitter.emit (domain.js:460:23)
at endReadableNT (_stream_readable.js:1092:12)
at process._tickCallback (internal/process/next_tick.js:63:19)

2) TestMyContract5
testNoThrow:
Error: VM Exception while processing transaction: revert
at Object.InvalidResponse (C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\~\web3\lib\web3\errors.js:38:1)
at C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\~\web3\lib\web3\requestmanager.js:86:1
at C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\truffle-provider\wrapper.js:134:1
at XMLHttpRequest.request.onreadystatechange (C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\~\web3\lib\web3\httpprovider.js:128:1)
at XMLHttpRequestEventTarget.dispatchEvent (C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\~\xhr2\lib\xhr2.js:64:1)
at XMLHttpRequest._setReadyState (C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\~\xhr2\lib\xhr2.js:354:1)
at XMLHttpRequest._onHttpResponseEnd (C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\~\xhr2\lib\xhr2.js:509:1)
at IncomingMessage. (C:\Users\HP\AppData\Roaming\npm\node_modules\truffle\build\webpack:\~\xhr2\lib\xhr2.js:469:1)
at IncomingMessage.EventEmitter.emit (domain.js:460:23)
at endReadableNT (_stream_readable.js:1092:12)
at process._tickCallback (internal/process/next_tick.js:63:19)





My test contract is:

pragma solidity ^0.4.22; import "truffle/Assert.sol"; import "truffle/DeployedAddresses.sol"; import "../contracts/Mycontract5.sol"; contract TestMyContract5{ function testTheThrow() public { MyContract5 mycontract = new MyContract5(); ThrowProxy throwproxy = new ThrowProxy(address(mycontract)); MyContract5(address(throwproxy)).storeNum(7); bool r = throwproxy.execute.gas(200000)(); Assert.isFalse(r, "Should be false ecause is should throw!"); } function testNoThrow() public { MyContract5 mycontract = new MyContract5(); ThrowProxy throwproxy = new ThrowProxy(address(mycontract)); MyContract5(address(throwproxy)).storeNum(22); bool r = throwproxy.execute.gas(200000)(); Assert.isFalse(r, "Should be false ecause is should throw!"); } } contract ThrowProxy{ address public target; bytes data; constructor (address _target) public { target = _target; } function( ) public { data = msg.data; } function execute( ) public returns (bool) { return target.call(data); } }

and the contract being tested is:

pragma solidity ^0.4.22; contract MyContract5{ uint public mynumber; constructor ( ) public { mynumber = 24; } function storeNum(uint mynum) public returns (bool success) { require(mynum >10); mynumber = mynum; //changing the internal state. If we are not changing state then function should //be declared as pure return true; } }


Some body please guide me.


Zulfi.
Sign In or Register to comment.