2014-02-19 41 views
3

考慮這個摩卡測試:測試sails.js與摩卡咖啡:找不到/ API /服務/爲myService

var Sails = require('sails'); 

describe("Foo Model creation:", function() { 
    // create a variable to hold the instantiated sails server 
    var app; 

    // Global before hook 
    before(function(done) { 
    // Lift Sails and start the server 
    Sails.lift({ 
     log: { 
     level: 'error' 
     } 
    }, function(err, sails) { 
     app = sails; 
     done(err, sails); 
    }); 
    }); 

    // Global after hook 
    after(function(done) { 
    app.lower(done); 
    }); 

    describe("new foo", function() { 
    var foo; 
    before(function (cb) { 
     var fooData = { 
     name: "test foo to be removed after test" 
     }; 

     Foo.create(fooData, function (err, newFoo)    
     if (err) return cb(err); 
     foo = newFoo; 
     cb(); 
     }); 
    }); 
    it("must show the name", function() { 
     foo.must.have.property('name'); 
    }); 

    after(function (cb){ 
     foo.destroy(function (err) { 
     cb(err); 
     }); 
    }); 
    }); 
}) 

這只是富模型依賴於定義的船帆服務即庫代碼工作/ API /服務。在這裏舉起帆時,無法找到這些服務。

有沒有辦法在摩卡測試期間指示Sails來加載服務?

+0

這應該工作。你使用的是什麼版本的Sails? – sgress454

回答

0

我也有類似的問題,而事實上,帆應該是加載服務,控制器等

有一些調試工具,起重帆時幫助:

Sails.lift({ log: { level: 'verbose' }, appPath: '../', // explicitly load almost everything but policies //loadHooks: ['moduleloader', 'userconfig', 'orm', 'http', 'controllers', 'services', 'request', 'responses', 'blueprints'] }

我也做了摩卡的實時調試(儘管我不會在這裏進入步驟)。

什麼我發現通過調試和verbose日誌級別(你也可以嘗試silly如果絮絮叨叨沒有回答一個問題)是,我是在錯誤的目錄加載帆 - test目錄。一旦我將appPath更改爲'../',我可以從日誌消息中知道它正在加載正確的內容,並且瞧,我的sails.services.myService對象已經在那裏了!

希望有幫助!