-
-
Save mrister/505700e6d27e2ff0a7aa8962fd911111 to your computer and use it in GitHub Desktop.
| #!/usr/bin/env bash | |
| # make soure you have mocha installed | |
| npm i mocha -g | |
| # run tests with mocha | |
| mocha --reporter=spec test.spec.js |
| var chai = require('chai'); | |
| var expect = chai.expect; | |
| var assert = chai.assert; | |
| var testObj = { | |
| name: "test", | |
| sub: { | |
| name: 'test sub' | |
| }, | |
| numbers: [1, 2, 3, 4], | |
| hasNumbers : true | |
| }; | |
| describe ('Test Suite', function () { | |
| describe('expect tests', function () { | |
| it ('should be a valid testObject', function () { | |
| expect(testObj).to.be.an('object').and.is.ok; | |
| expect(testObj).to.have.property('sub').that.is.an('object').and.is.ok; | |
| expect(testObj.sub).to.have.property('name').that.is.a('string').and.to.equal('test sub'); | |
| expect(testObj).to.have.property('numbers').that.deep.equals([1, 2, 3, 4]); | |
| expect(testObj).to.have.property('hasNumbers', true); | |
| }); | |
| }); | |
| describe('assert tests', function () { | |
| it ('should be a valid testObject', function () { | |
| assert.isOk(testObj); | |
| assert.isObject(testObj); | |
| assert.propertyVal(testObj, 'name', 'test'); | |
| assert.property(testObj, 'sub'); | |
| assert.propertyVal(testObj.sub, 'name', 'test sub'); | |
| assert.deepEqual(testObj.numbers, [1, 2, 3, 4]); | |
| assert.typeOf(testObj.hasNumbers, 'boolean'); | |
| assert.isTrue(testObj.hasNumbers); | |
| }); | |
| }); | |
| }); |
@ YagneshP this is a bit of old code, but there is no reason to check again, this is an accidental leftover I guess :-)
Update, thank you for noticing.
@mrister how would you handle the imports if you had multiple test suites that all required to import chai? e.g. so we don't repeat requires in each file?
var chai = require('chai');
var expect = chai.expect;
var assert = chai.assert;
@lonely-caat, That depends on your setup and test runner however you could try as described here and register them as globals chaijs/chai#1140 (comment)
A quite common approach if you are using mocha is to set up a mocha.opt or .mocharc config file and in it require a module where you import chai (and any other helpers you would like) and then those are globally available for usage in test files
https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js#L34
@mrister, while globals might be confusing for someone who's coming to the project to figure out where those variables are coming from, a config file sounds cool, thank you!
@lonely-cat. Yes that might be true, bit a little bit of documentation in project/s readme goes long way ;-). Glad to help!
Thank you ! i was searching for some query about property and propertyVal , this one helped me. One question though, why do you check property 'sub' on 'testobj' on line 32 and 34 again.