我用express寫了一個簡單的JSON API,我試圖用摩卡做一些黑盒測試。通過測試API需要以不同的用戶身份進行身份驗證,因此每個針對特定功能的測試都至少包含兩個請求:登錄操作以及測試實際功能的一個或多個已驗證請求。用於測試Express應用程序的狀態交互
我還沒有找到任何類似於django.test.client
的庫來模擬HTTP客戶端和服務器之間的有狀態交互。 Supertest似乎很受歡迎,但與django測試客戶端相比,它非常低級。這是我會怎麼寫它一個簡單的驗證測試(請原諒我的CoffeeScript):
it 'should return a 200 OK', (done) ->
supertest(server.app)
.post('/login')
.send("username=xxx&password=pass")
.end (err, res) ->
res.should.have.status(200)
supertest(server.app)
.get('/api/users')
.set('cookie', res.headers['set-cookie'][0])
.expect(200, done)
這真的執行的交互最徹底的方法?有什麼圖書館可以幫助我解決異步問題(這不是我需要的東西,而是99%的案例中的測試的簡單序列化,回調只是混淆)和有狀態?東西會是這樣的:
it 'should rock', (done) -> myCoolLibrary [
->
@post '/login', {username: "xxx", password: "pass"}, (err, res) =>
res.should.have.status 200
@done()
,
->
@get '/api/users', (err, res) =>
res.should.have.status 200
@done()
]
如果沒有類似的存在,我應該自己寫:-) 上下文的依賴是因爲我使用了太多ZappaJS這些天,並感謝CoffeeScript中的脂肪箭頭,它根本不是一個不好的成語。
以前版本帖子中有一些內容「這看起來很像async.series,這不是巧合」。我應該把它留在那裏:-)很顯然,node.js並不缺少任何構建塊,而是來自一個更龐大的整體框架,我覺得發現和學習10個模塊非常繁瑣,只是爲了做一些如此簡單的事情。我最終自己寫了一個非常特定於Zappa的實現,我會在某處發佈它。 – BruceBerry 2013-04-29 22:05:18
節點生態系統就像Perl一樣:有多種方式可以實現它。您花費大量時間評估潛在的模塊選項。 – dankohn 2013-04-30 01:05:08