Express で単純な JSON API を作成し、モカを使用してブラックボックス テストを実行しようとしています。API を徹底的にテストするには、異なるユーザーとして認証する必要があるため、特定の機能の各テストは、ログイン操作と、実際の機能をテストする 1 つ以上の認証済み要求の少なくとも 2 つの要求で構成されます。
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 の太い矢印のおかげで、それはまったく悪いイディオムではありません。