我是角度单元测试用例的新手,我正在尝试为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。
请告诉我这里我做错了什么。如果你能告诉我正确的代码,那就太好了。
提前致谢。
答案 0 :(得分:1)
我认为这是因为httpBackend存根中数据存根的数据结构不正确。
_http.whenGET('').respond([{
data: [
{ Balance: 5 },{Balance:10}]
}]);
应该是:
_http.whenGET('').respond([{ Balance: 5 },{Balance:10}]);
查看您的实现,看起来您正在寻找具有balance属性的每个对象的对象数组。而是在数据结构中再添加一层。
<强> Plnkr 强>
附注:您可能希望将http调用抽象为angular服务并在控制器中注入角度服务,而不是直接使用http。通过它,您可以在控制器中实现关注点分离和单一责任。此外,您还可以轻松地为您的服务创建模拟。