2014-01-29 60 views
-1

我在嘗試爲Node.js中的if else語句編寫Mocha測試時遇到了問題。這裏是正在測試:摩卡如何測試其他語句?

exports.restrict = function(req, res, next) { 
    if (req.session.user) { 
    next(); 
    } else { 
    req.session.error = 'Access denied!'; 
    res.redirect('/login'); 
    } 
} 

這是我正在試圖測試一下:

describe('interface', function(){   
it('should show ability to asynchronously deny a user with an incorrect password', function(done){ 
     function restrict (req, res, next){ 
      if (req.session.user) { 
       next(); 
       done(); 
      } else { 
       req.session.error.should.equals('Access denied'); 
       req.redirect.should.equals('/login'); 
       done(); 
      } 
     } 
    }); 
}); 

運行測試時,我收到的錯誤是,它說超時,因爲它超過了2000毫秒。我究竟做錯了什麼?

回答

0

在你的測試中,你定義了一個永遠不會被調用的restrict函數,所以done永遠不會被調用,並且測試超時。這是你做錯了什麼。在Mocha測試中使用if... else沒有什麼特別之處。

更寬泛的問題:您在問題中顯示的內容表明您將模塊的代碼複製到測試套件中。這是測試代碼的一個可怕的方法。您應該構建模塊,以便測試套件能夠在不重複代碼的情況下執行其功能。