2015-04-23 53 views
1

對不起,有一個新手問題,我對摩卡還是個新手。我有一個現有的應用程序,我負責創建一個摩卡測試用例。這個應用程序使用passport-auth0passport用戶登錄。如何寫摩卡測試,以便我可以登錄爲虛擬用戶來測試受限功能?如何在expressjs應用上作爲auth0用戶進行摩卡測試?

+0

請告訴我們摩卡是如何造成你的問題。如果您在不使用摩卡咖啡時能夠以虛擬用戶身份登錄,那麼您也應該可以使用摩卡咖啡。 – Louis

回答

3

由於Passport使用可交換的策略,因此一種選擇是在運行測試時用模擬代替實際的auth0策略。這看起來是這樣的:

function MockStrategy() { 
} 

MockStrategy.prototype.authenticate = function(req) { 
    self.success({ id: 1, username: 'joe'); 
} 

// In test setup, mock out the strategy with one that returns 
// dummy data. 
passport.use('auth0', new MockStrategy()); 

現在,您可以編寫測試用例,其中req.user將永遠是joe由模擬策略提供。您可以採用類似的方式擴展認證失敗。

這是我的首選方法,因爲它侵入性最小。根據應用程序代碼的結構,可能會有其他依賴性需要被嘲笑。對於這些情況,我發現proxyquire是有用的。