2012-07-10 20 views
2

我有一個簡單的身份驗證系統,我使用express對'/ session'上的幾個post/get/dels進行了驗證。我想測試這個,但我似乎無法找到一個簡單的方法來簡單地從服務器測試http.sendPut('/session', {data})。有沒有人有圖書館使用建議?使用express來測試node.js中的HTTP請求

我使用摩卡/應爲我的測試,如果有幫助。

這裏是我的超級簡單的auth-啄,我想測試(它掛接到其他一些東西):

//Login 
app.post("/session", function(req, res) { 
    if (req.body.username === "admin" && req.body.password === "admin") { 
    req.session.user = "user"; 
    res.send("Successfully logged in!"); 
    } else { 
    res.send(403, "Invalid username or password."); 
    } 
}); 
//Logout 
app.del("/session", function(req, res) { 
    req.session.user = null; 
    res.send("Successfully logged out."); 
}); 
//Am I logged in? Check for the client 
app.get("/session", function(req, res) { 
    if (req.session.user) { 
    res.send(req.session.user); 
    } else { 
    res.send(403, "You are not logged in."); 
    } 
}); 

感謝。

+0

https://github.com/mikeal/request很受歡迎。 – 2012-07-11 00:53:02

回答

5

Express.js使用supertest進行測試,並且超特殊是基於superagent

如果您需要一些示例,可以在Express.js test code中找到它們。

所有需要request = require('./support/http');的測試都使用超級測試。

+0

這是完美的。謝謝! – 2012-07-11 13:45:21

+0

那麼,使用這個到目前爲止,我需要一種方法來檢查req.session發送http請求後。我似乎無法在superagent或supertest中找到任何支持,任何想法? – 2012-07-11 14:16:59

+0

我不認爲這是超可能的。它更像是一種黑盒測試風格,會話不會直接在http請求中生存。您可能需要測試中間件的更多單元測試樣式(函數(req,res)),並檢查req或res的狀態。我有一個幫助程序模塊,用於在我的項目中執行此操作。 https://github.com/Enome/express-recorder/blob/master/specs/middleware.js也許你可以從中得到一些想法。 – Pickels 2012-07-11 17:37:28