2015-07-01 73 views
3

我已經創建了一個sails js應用程序。我想爲我的應用程序添加單元測試。我正在使用以下方法進行單元測試。 http://sailsjs-documentation.readthedocs.org/en/latest/concepts/Testing/sails js單元測試

我正在使用grunt來測試我的應用程序與摩卡。現在我需要一種方法來覆蓋一些sails方法(查找,更新等)用於我的測試,因爲我不想在測試代碼時與數據庫交互。有沒有辦法覆蓋帆JS方法。作爲一個例子,當我在我的測試中使用User.find方法時,我想有一個特定的結果來測試我的其他方法是否完美。任何形式的幫助都會受到歡迎。

回答

3

如果您想要測試而不觸摸生產數據庫,則可以使用不同的表/數據庫集合。這是集成測試中的常用方法(不使用模擬)。

這裏是例如,在文件bootstrap.test.js

var Sails = require('sails'), 
    sails; 

before(function (done) { 
    Sails.lift({ 
    connections: { 
     mongodbServer: { 
     database: 'database_test' 
     } 
    }, 
    models  : { 
     migrate: 'drop' 
    } 
    }, function (err, server) { 
    sails = server; 
    if (err) return done(err); 

    done(); 
    }); 
}); 

after(function (done) { 
    // here you can clear fixtures, etc. 
    sails.lower(done); 
}); 

它假定您的連接使用mongodbServer和db database_test。配置它以滿足您的需求。

+0

謝謝你的回答,我已經閱讀了一些關於teting的文章,大多數人說我們執行它們後應該很快完成單元測試。因此,使用模擬器相當好是個好主意,但是我找不到任何具體的方法來使用sail中的模擬來覆蓋使用函數或其他方法構建的sails。 –

+1

單元測試和集成測試是不同的。我的解決方案實際上是集成測試。因爲(只是我的觀點)Sails模型中的純單元測試很難實現,所以它的優勢也較小。 但是,如果你仍然想嘗試使用'sinon'。這裏是參考文獻[@Github](https://github.com/fdvj/wolfpack/issues/2)。 –

+0

我在測試/單元/控制器和測試/單元/模型中編寫測試用例。在我的grunt文件中,如何使用bootstrap.test.js文件運行我的單元文件夾中的所有測試。現在我正在使用grunt單獨運行測試文件。 –