用于累加值的角度单位测试

时间:2015-01-08 00:45:53

标签: angularjs jasmine angularjs-http angular-mock

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

我不断收到错误预期的NaN为15.错误:预计NaN为15。

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

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

应该是:

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

查看您的实现,看起来您正在寻找具有balance属性的每个对象的对象数组。而是在数据结构中再添加一层。

<强> Plnkr

附注:您可能希望将http调用抽象为angular服务并在控制器中注入角度服务,而不是直接使用http。通过它,您可以在控制器中实现关注点分离和单一责任。此外,您还可以轻松地为您的服务创建模拟。