11

私は Yeoman、Grunt、および Bower を使用して、バックエンドから独立してフロントエンドを構築するためのプラットフォームを構築しています。私の(AngularJS)コントローラー、サービス、工場などのすべてがこのプロジェクトに存在し、その後、gruntビルドの結果に基づいてサーバー側のコードベースに注入されるという考えです。

私の質問は:

Grunt サーバーが (Rails) アプリと同じエンドポイントに応答するように、エンドポイントをモックするにはどうすればよいですか?

現時点で私は使用しています:

 angular.module('myApp', ['ngResource'])

 .run(['$rootScope', function ($rootScope) {
     $rootScope.testState = 'test';
  }]);

そして、私の個々のサービスのそれぞれで:

   mockJSON = {'foo': 'myMockJSON'}

そして、すべての方法で:

   if($rootScope.testState == 'test'){
    return mockJSON;
  }
  else {
    real service logic with $q/$http goes here
  }

その後grunt buildtestState = 'test'が削除されます。

これは明らかに比較的ぎこちないアーキテクチャです。どうすれば回避できますか?Grunt をアプリと同じエンドポイントに応答させるには (動的パラメーターを持つものもあります)、ロジックを適用し (必要に応じて)、json ファイルを提供します (おそらくパス パラメーターに依存します)。

4

6 に答える 6

2

grunt-connect-prismは、Ruby プロジェクトのVCRに似ています。フロントエンド開発者が API (またはその他のリモート ソース) から返された HTTP 応答を記録し、後で再生する簡単な方法を提供します。基本的には HTTP キャッシュですが、Single Page Application (SPA) で作業する開発者向けです。 また、存在しない API 呼び出しのスタブを生成し、必要な方法で設定することもできます。

開発中に複雑で待ち時間の長い API 呼び出しをモックするのに役立ちます。SPA のみの e2e テストを作成し、サーバーを式から除外する場合にも役立ちます。これにより、e2e テスト スイートの実行が大幅に高速化されます。

Prism は、 grunt-contrib-connectプラグインによって提供される接続サーバーにカスタム接続ミドルウェアを追加することによって機能します。「記録」モードでは、次のような内容のファイル システムで応答ごとにファイルが生成されます。

  {
    "requestUrl": "/api/ponies",
    "contentType": "application/json",
    "statusCode": 200,
    "data": {
      "text": "my little ponies"
    }
  }

免責事項: 私はこのプロジェクトの作成者です。

于 2014-09-07T20:27:16.713 に答える