2

我是角度单元测试用例的新手,我正在尝试为我在 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 15.

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

提前致谢。

4

1 回答 1

1

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

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

应该:

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

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

PLNKR

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

于 2015-01-08T01:36:47.203 回答