Merge pull request #346 from richard-ramos/develop

Updating documentation related to smart contracts and tests
This commit is contained in:
Iuri Matias 2018-03-19 14:15:50 -04:00 committed by GitHub
commit 323e2d74d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 69 additions and 3 deletions

View File

@ -1,8 +1,8 @@
Testing Ethereum Contracts
==========================
You can run specs with ``embark test``, it will run any test files under
``test/``.
You can run specs with ``embark test``, it will run all the test files under
``test/``. You can run a specific test file with ``embark test <path/test_filename.js>
Embark includes a testing lib to fastly run & test your contracts in a
EVM.
@ -120,3 +120,48 @@ and initialize the testing functionality. Below is an example using mocha:
``mocha test/simple_storage_spec.js --no-timeouts``
**accessing accounts**
The callback used in the function ``deployAll`` will let you access the accounts configured in the EVM.
You can assign them to a variable and use them in your tests.
.. code:: javascript
var accountArr;
EmbarkSpec.deployAll(contractsConfig, (accounts) => {
accountArr = accounts;
done();
});
**creating contract instances in your tests**
Embark handles the deployment of your contracts through the function ``deployAll``.
However you can use ``web3.eth.contract`` for creating instances of your contracts manually.
.. code:: javascript
var simpleStorageJson = require('../dist/contracts/SimpleStorage.json');
var accountArr;
var simpleStorage;
describe("SimpleStorage", function() {
this.timeout(0);
before(function(done) {
EmbarkSpec.deployAll({}, (accounts) => {
accountArr = accounts;
done();
});
});
it("should deploy a contract instance", function(done) {
var simpleStorageContract = new web3.eth.Contract(simpleStorageJson.abi);
simpleStorageContract.deploy({data: simpleStorageJson.code, arguments: [100]})
.send({from: accountArr[0], gas: 5000000, gasPrice: 1})
.then(function(contractInstance){
simpleStorage = contractInstance;
simpleStorage.setProvider(web3.currentProvider);
assert(simpleStorage.options.address != null);
})
.finally(done);
});
});

View File

@ -47,7 +47,8 @@ arguments:
"args": [
100
],
"gas": 800000
"gas": 800000,
"gasPrice": 5
}
}
}
@ -177,3 +178,23 @@ instead.
...
}
You can specify actions to do after the deployment of a contract using the "onDeploy" parameter.
| "onDeploy" - should be an array of javascript instructions that will be evaluated and executed
.. code:: json
# config/contracts.json
{
"development": {
"gas": "auto",
"contracts": {
"SimpleStorage": {
"args": [
100
],
"onDeploy": ["SimpleStorage.methods.set(150).send()"]
}
}
}
}