5

$resource サービスを拡張する RESTful サービスを持つ Angular.js アプリケーションを開発しています。このアプリは将来的に Java Spring アプリケーションに接続しますが、現在、クライアント側からアプリケーションに必要なすべてのルートを提供する分離されたモックをセットアップしようとしています。Backbone.js などの他の MV* フレームワークを使用して、他のアプリを開発するときにルートを提供する偽のクライアント側サーバーを作成するために Sinon.js を使用したことがあります。

JSON データをフェッチするための「標準的な」ajax 呼び出しとは異なり、JQuery/Backbone が実行するように、Angular は XHR を異なる方法で使用し、要求をハイジャックしてクライアント側から応答しようとする Sinon の試みによって「騙され」ないようです。

代わりに、$httpBackend を使用して、準備が整ったデータで偽のルートを作成しようとしましたが、このサービスは、セットアップする必要がある「ステージング環境」ではなく、単体テストのみに使用することを意図していたようです。

これは、JQuery.ajax では機能しますが、Angular の $resource または $http では機能しない、私の Sinon セットアップの様子です。

var server = sinon.fakeServer.create();
server.respondWith("GET", /mydata/gi, [200,
    { "Content-Type": "application/json" },
    JSON.stringify({
        data: "myData"
    })
]);
server.autoRespond = true;

これが Angular でどのように機能しないかについてのアイデアはありますか? または、さらに良いことに、Angular アプリにそのようなモックを設定する方法を知っている人はいますか?

4

2 に答える 2

2

sinon.js や$httpBackend. sinon.js の上に構築された偽の REST サーバーである FakeRest を使用することをお勧めします。

https://github.com/marmelab/FakeRest

免責事項:私たちが書きました。

于 2015-03-25T08:59:01.040 に答える
2

「e2e」(エンドツーエンド) $httpBackend モックはまさに​​あなたが探しているものだと思います。

ドキュメントの引用: 「エンドツーエンドのテストまたはバックエンドのない開発に適した偽の HTTP バックエンドの実装については、e2e $httpBackend mockを参照してください。」

「単体テストとは対照的に、エンド ツー エンドのテスト シナリオや、実際のバックエンド API をモックに置き換えてアプリケーションを開発するシナリオでは、特定のカテゴリのリクエストがモックをバイパスして、実際の http 要求を発行します (たとえば、Web サーバーからテンプレートまたは静的ファイルを取得するため)。"

また、Angular で偽のバックエンドを使用するいくつかのエレガントな方法を説明している良い記事も見つけました。

于 2013-09-18T17:09:51.000 に答える