2017-01-18 3 views
1

Ich möchte ein Mixin Unit-Test testen. Also muss ich eine Loopback 3.x-Anwendung vollständig im Code erstellen. Es funktioniert so weit und es registriert mein Mixin, aber es registriert mein Modell nicht. Es ist nicht über REST ausgesetzt, aber das ist genau das, was ich brauche.LoopbackJS Registermodell für Komponententest

Hier ist mein Code:

// create loopback app 
app = loopback(); 

app.use(loopback.rest()); 

// create data source 
app.dataSource('db', { 
    name: 'db', 
    connector: loopback.Memory 
}); 

app.loopback.modelBuilder.mixins.define('accesscheck', AccessCheck); 

app.loopback.createModel({ 
    name: 'AccesscheckTest', 
    plural: 'AccesscheckTests', 
    base: "PersistedModel", 
    accesscheck: [{ 
     permission: "ALLOW", 
     roles: [ 
      'admin' 
     ], 
     accessScope: "organization", 
     method: "findById" 
    }], 
    mixins: [ 
     "accesscheck" 
    ] 
}); 

var Accesscheck = app.loopback.getModel('Accesscheck'); 
app.model(Accesscheck, { dataSource: 'db', public: true }); 

// start server 
var connection = app.listen(3000,() => { 
    if (done) { 
     done(); 
    } 
}); 

app.activeConnection = connection; 

return app; 

PS: Ich weiß, dass das ACL-Modell in Loopback ist, aber es ist mein Bedürfnis nicht passen, damit ich meine eigene Access implementieren muß.

Antwort

2

Sie müssen Boot von loopback-boot aufrufen.

Ich denke, es ist besser, die server.js in Testeinheiten zu verlangen.

Und config-Datei in package.json für Test wie dies in diesem Muster datasources.test.json und ein Skript für den Test machen: "test": "NODE_ENV=test ./node_modules/mocha/bin/mocha --recursive",

So gibt es keine Notwendigkeit, mehr Modelle in Unit-Tests zu erstellen.

+0

Ich denke, es ist ziemlich viel Aufwand, ein komplettes Loopback-Projekt einzuschließen, nur um ein einfaches Mixin zu testen. Ich möchte ein npm-Paket für diesen Mix erstellen, damit ich es in mehreren Loopback-Anwendungen wiederverwenden kann. –

+0

@ blacksheep_2011 Du hast gesagt, du willst Server machen und über Ruhe aussetzen. Das ist also kein Unit-Test. Und ich denke, es ist besser, komplettes Projekt für die Integration/Akzeptanz Test zu laden –

+0

Sie haben absolut Recht, seit ich einen Server starten, das sind Integrationstests. Ich werde es auf diese Weise versuchen und den Aufwand so gering wie möglich halten. Vielen Dank für Ihre Hilfe –