2011-10-17 10 views
5

node.jsを使用してGETおよびPUTリクエストに応答するRESTful Web APIを作成しました。 APIをテストする際にいくつかの問題があります。 は、我々はまずZombie.jsを使用しますが、よく私たちはそれがPUT要求を作るために得ることができなかった文書化されていませんです:我々は我々ドンいるので、OKでしょうrestlerと呼ばれるRESTクライアントを、使用してみました。その後jasmineとnode.jsを使用したWeb APIのテスト

var zombie = require("zombie"); 

describe("description", function() { 
    it("description", function() { 
    zombie.visit("http://localhost:3000/", function (err, browser, status) { 
     expect(browser.text).toEqual("A") 
    }); 
    }); 
}); 

高度なブラウザシミュレーションが必要です。

var rest = require('restler'); 
describe("description", function() { 
    it("description", function() { 
    rest.get("http://www.google.com").on('complete', function(data, response) { 
     // Should fail 
     expect(data).toMatch(/apa/i); 
    }); 
    }); 
}); 

は、我々は、代替テストフレームワークについての任意のヒントに感謝したい:テストは無用である、すなわち、それが成功した場合に "コールバックが呼び出される前に終了したので、 - これは、要求が非同期であるように思わという事実のために失敗しましたまたは同期要求クライアント。

+1

それはあなたのRESTfulなテストを与えることはありませんが、[誓い](http://vowsjs.org/)は、テストフレームワークをベースとかなり良いNode.jsのです。 – hross

+0

チップをありがとう、私はそれをチェックアウトします。 – Jesper

答えて

3

私はこれについて興味があったので、もう少し調査をしました。 zombie以外にも、いくつかのオプションがあります。

httpライブラリlike this guyvowsを使用できます。

はしかし、私はより良いアプローチは明らかにvows上に構築されてAPIeasyを、使用するかもしれないと思います。 awesome article over at nodejitsu that explains how to use itがあります。

もう一つの興味深いアイデアは、あなたが明示を使用している場合はexpressoを使用することです。ノードについて

4

、Misko Heveryからジャスミンノードは、非同期サポートを有し、ジャスミンをラップ。

https://github.com/mhevery/jasmine-node

あなたがテスト署名に「行って」パラメータを追加し、非同期呼び出しが完了したときに呼び出すこと。タイムアウトをカスタマイズすることもできます(デフォルトは500msです)。

GitHub READMEから

it("should respond with hello world", function(done) { 
    request("http://localhost:3000/hello", function(error, response, body){ 
    done(); 
    }, 250); // timeout after 250 ms 
}); 

ジャスミン定期的にも実行され、waitsForとは非同期のテストをサポートしている、またはJasmine.Asyncで[完了 'を使用することができます。

関連する問題