1

私と私のチームは Web アプリケーションを作成しており、これを行っています。

  • それらの 1 つは API を担当します。
    • APIはUIにサービスを提供し、データを提供し、UIが必要とするフィールド、ソートされたもの、およびすべてを提供する可能性があります。基本的にすべてのデータをフィルタリングするため、UIは必要ありません。
  • もう 1 つは UI を担当します。
    • UI は API を使用してデータを表示します
  • 私はテストを行っていますが、コードの後に​​テストを行っています。API (phpunit - 単体テストと統合テスト) と UI (jasmine - 単体テストと分度器 - e2e テスト) の両方をテストします。

では、実際に何をテストすればよいのでしょうか?

angularJS のコントローラー関数のほとんどはデータを取得して $scope に割り当てますが、これらの関数は単体テストに値しますか?

コントローラーメソッドの例:

UnidadesOrganicasService.getUnidadesOrganicas().then(function (unidadesOrganicas) {
                $scope.unidadesOrganicas = unidadesOrganicas;
            }, function errorCallback() {
                $scope.showToastError('Occorreu um erro a carregar as unidades orgânicas!');
            });

他のメソッドは、API からのデータに依存するいくつかの if と基本的に同じです。

サービス方法:

this.getUnidadesOrganicas = function () {
        return Restangular.all("unidades-organicas").getList({"sort": "acronimo"});
    };

したがって、テストは次のようになります。

  • $httpBackend でデータをモックする
  • スコープのチェックには正しいモック化されたデータがありますが、これは次のような結果になります:expect($scope.something).toEqual(MockedSomething);そして http モックはまさに​​これです:$httpBackend.expectGET('/something').respond(MockedSomething);

UI の E2E テストが非常に重要であることは知っていますが、この場合、この種のメソッドに対して単体テストを作成する価値はありますか? それとも、微積分法やそのような方法のような本当に重要な方法をテストする必要がありますか?

一方、API では、ほとんどの機能が統合テストに関係がないように見え、単体テストがはるかに重要に見えます。

私の本当の質問は、私が正しく考えているかどうか、そしてこの場合に何をテストするかについての方向性です。

編集1:

別の質問: 私の場合 (テスト駆動開発ではなく、コードの後に​​テストします)、コントローラーが完成した後にのみテストする必要があります (本来の目的を実行しますが、少しリファクタリングすることができます)。

4

1 に答える 1

1

それは常にプロジェクトの予算と複雑さに依存します。まず第一に、プロジェクトでのあなた自身の経験が、どこで安く手に入れることができるか、そしてテスト範囲の欠如がどこでお金がかかり、あなたの髪を引き裂くかを教えてくれます.

コントローラの単体テストを現実のものにしてくれた Angular のおかげです。ほとんどの場合、ボットはスキップして e2e に任せます。これは、コントローラを薄くしておく場合に特に当てはまります。

バックエンドのテストに本当に自信がある$httpBackend場合、サービス設計で許可されていれば、省略してプロミス チェーンを 1 段階高くすることができます。これは望ましくありませんが、実現可能なシナリオです。

于 2015-04-08T19:21:39.560 に答える