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