2014-02-19 44 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对象已经在那里了!

希望有帮助!