Angular 累加值的单元测试

Angular unit test for adding up values

我是 angular 单元测试用例的新手,我正在尝试为我的 Angular 控制器中的以下代码编写单元测试用例。数据包含已加起来并分配给 $scope.Total

的余额
.success(function (data) {
$scope.Total = _.reduce(data, function(memo, value) {
                    return memo + value.Balance;
                }, 0);
});

我的测试用例如下所示

it('should return Total', function () {


                _http.whenGET('').respond([{
                    data: [
                    { Balance: 5 },{Balance:10}]
                }]);

                _controller();
                _http.flush();

                expect(_scope.Total).toBe(15);
            });

我一直收到错误 Expected NaN to be 15.Error: Expected NaN to be 15.

请让我知道我在这里做错了什么。如果你能告诉我正确的代码就太好了。

提前致谢。

我认为这是因为 httpBackend stubbing 中数据存根的数据结构不正确。

 _http.whenGET('').respond([{
                data: [
                { Balance: 5 },{Balance:10}]
  }]);

应该是:

  _http.whenGET('').respond([{ Balance: 5 },{Balance:10}]);

查看您的实现,您似乎正在寻找对象数组,每个对象都具有平衡 属性。相反,您在数据结构中又添加了一层。

Plnkr

旁注:您可能希望抽象化对 angular 服务的 http 调用,并在控制器中注入 angular 服务,而不是直接使用 http。这样,您就可以在控制器中实现关注点分离和单一责任。您也可以轻松地为您的服务创建模拟。