2017-01-18 37 views
1

我想單元測試一個mixin。 所以我需要完全在代碼中創建一個loopback 3.x應用程序。 它工作到目前爲止,它註冊我的mixin,但它沒有註冊我的模型。 它沒有透露REST,但那正是我需要的。LoopbackJS寄存器模型的單元測試

這裏是我的代碼:

// 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:我知道,有回送的ACL模型,但是,所以我需要實現我自己的AccessCheck它不適合我的需要。

回答

2

您需要從loopback-boot調用引導。

我認爲最好在測試單元中要求server.js。在這種模式datasources.test.json測試

並做好配置文件,這樣的測試在package.json的腳本:"test": "NODE_ENV=test ./node_modules/mocha/bin/mocha --recursive",

所以沒有必要再創建單元測試模型。

+0

我認爲包含一個完整的迴環項目只是爲了測試一個簡單的mixin是非常耗費的。我想爲這個mixin創建一個npm包,以便我可以在多個回送應用程序中重用它。 –

+0

@ blacksheep_2011你告訴過你想要製作服務器並在休息時暴露出來。所以這不是單元測試。我認爲最好加載完整的項目進行集成/驗收測試 –

+0

你是絕對正確的,因爲我啓動了一個服務器,這是集成測試。我會用這種方式來嘗試,並儘可能降低開銷。感謝您的幫助 –