This module is no longer maintained by StrongLoop/IBM.
We are encouraging the community to take the ownership of this module. Please open an issue in https://github.com/strongloop/loopback if you are willing to become the new maintainer.
See also https://groups.google.com/forum/#!topic/loopbackjs/w038RvqHeYI
#loopback-testing
Utilities for testing LoopBack apps
The following helpers are designed to generate [mocha] tests against LoopBack apps.
npm install loopback-testing --save-dev- Assuming you started with a clean template/project generated by
slc loopback - If you have mocha installed as a global npm module that's great! Simply update
<your_project>/package.jsonwith:
```{... "scripts":{... "test": "mocha" } } ``` - Otherwise, you can utilize the mocha library within the
loopback-testingtesting module:
```{... "scripts":{... "test": "./node_modules/loopback-testing/node_modules/.bin/mocha" } } ``` - Run
npm testto execute any tests under thetestdirectory.
Below is a simple LoopBack app.
varloopback=require('loopback');varapp=loopback();varProduct=app.model('product');Product.attachTo(loopback.memory());Use the loopback-testing module to generate mocha tests.
varlt=require('loopback-testing');varassert=require('assert');varapp=require('../server/server.js');//path to app.js or server.jsdescribe('/products',function(){lt.beforeEach.withApp(app);lt.describe.whenCalledRemotely('GET','/products',function(){lt.it.shouldBeAllowed();it('should have statusCode 200',function(){assert.equal(this.res.statusCode,200);});lt.beforeEach.givenModel('product');it('should respond with an array of products',function(){assert(Array.isArray(this.res.body));});});});Use TestDataBuilder to build many Model instances in one async call. Specify only properties relevant to your test, the builder will pre-fill remaining required properties with sensible defaults.
varTestDataBuilder=require('loopback-testing').TestDataBuilder;varref=TestDataBuilder.ref;// The context object to hold the created models.// You can use `this` in mocha test instead.varcontext={};varref=TestDataBuilder.ref;newTestDataBuilder().define('application',Application,{pushSettings: {stub: {}}}).define('device',Device,{// use the value of application's id// the value is resolved at build timeappId: ref('application.id'),deviceType: 'android'}).define('notification',Notification).buildTo(context,function(err){// test models are available as// context.application// context.device// context.notification});