1

所以我和我的团队正在创建一个 Web 应用程序,我们正在这样做:

  • 其中一位负责 API:
    • api 将为 UI 提供服务,为其提供数据,并有可能提供 UI 所需的字段、排序和所有内容,基本上它过滤所有数据,因此 UI 不必这样做。
  • 另一个负责 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!');
            });

其他方法与某些 if 的方法基本相同,这取决于来自 API 的数据。

服务方式:

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如果服务设计允许,您可能会跳过并在承诺链上更上一层楼,这是不可取但可行的情况。

于 2015-04-08T19:21:39.560 回答