我用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