2014-01-10 42 views
6

對於我的船帆的應用程序,我用下面的代碼進行單元測試的用戶模型,模型,但得到的錯誤消息:不能單元測試我在sailsjs

「類型錯誤:對象#有沒有方法'創建」

var User = require('../../api/models/User'); 
var Sails = require('sails'); 

console.log(User); 

describe("User Model:", 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("Password encryption", function() { 

    describe("for a new user", function() { 
     var user; 
     before(function (cb) { 
     var userData = { 
      email: "[email protected]", 
      password: "test_password", 
      passwordConfirmation: "test_password" 
     }; 

     User.create(userData, function (err, newUser) { 
      if (err) return cb(err); 
      user = newUser; 
      cb(); 
     }); 
     }); 

     it("must encrypt the password", function() { 
     user.must.have.property('encryptedPassword'); 
     user.must.not.have.property('password'); 
     user.must.not.have.property('passwordConfirmation'); 
     }); 

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

在我看來,帆正確解除了,導致創建方法不可用的問題是什麼?

+0

我對nodejs很陌生,試圖爲我正在構建的應用程序編寫一些測試。是否有可能看看你的模型,以便我可以嘗試弄清楚如何爲我的模型編寫測試。謝謝 – kushaldsouza

回答

14

刪除第一行:

var User = require('../../api/models/User'); 

一旦帆的應用程序被提起,你都將自動獲得你的模型,看到here,例如。

在你的情況中,你的第一行覆蓋了由Sails.js構造的User模型,這就是爲什麼即使你有一個對象它不是水線模型。

+1

如果我在測試文件夾(任何文件夾下)下定義test.js文件,我就面臨同樣的問題。無法達到用戶模型,顯示錯誤「ReferenceError:用戶未定義 」。如果我寫var User = require(' ../api/models/User.js');顯示錯誤「類型錯誤:對象#沒有方法'創建' 」 – tajuddin

+0

@tajuddin請看[this example](https://github.com/bredikhin/sailsjs-mocha-testing-barrels-fixtures-example/blob /master/test/index.js)。 – bredikhin

+0

以上鍊接被破壞。 –