Angular.js:测试控制器功能,更改$ scope

扬·科沃克(Jan Kowalke)

我正在尝试测试此控制器功能:

$scope.deleteAccount = function(account) {

  Account.deleteAccount(account._id)
  .then(function() {
    angular.forEach($scope.accounts, function(a, i) {
      if (a === account) {
        $scope.accounts.splice(i, 1);
      }
    });
  })
  .catch(function(err) {
    $scope.errors.other = err.message;
  });
};   

它在管理页面上。该函数调用工厂(带有承诺),并且工厂删除服务器上的帐户。然后,该函数将删除范围内的元素,以便不再显示已删除的元素。

我的测试看起来像这样:

beforeEach(inject(function ($controller, $rootScope, _$location_, _$httpBackend_) {

    $scope = $rootScope.$new();
    $location = _$location_;
    $httpBackend = _$httpBackend_;
    fakeResponse = '';

    AdminAccountCtrl = $controller('AdminAccountCtrl', {
      $scope: $scope
    });
    $location.path('/admin/account');
}));

it('test delete account', function () {
    expect($location.path()).toBe('/admin/account');

    $httpBackend.expectGET('/api/accounts').respond([{_id: 1}, {_id: 2}, {_id: 3}]);
    $httpBackend.when('GET', 'app/admin/admin.account.html').respond(fakeResponse);
    $httpBackend.when('DELETE', '/api/accounts/1').respond(fakeResponse);
    $httpBackend.flush();

    $scope.deleteAccount($scope.accounts[0]);
    expect($scope.accounts).toEqual([{_id: 2}, {_id: 3}]);
});

可悲的是,结果是:

Expected [ { _id : 1 }, { _id : 2 }, { _id : 3 } ] to equal [ { _id : 2 }, { _id : 3 } ].
亚伦·史威默(Yaron Schwimmer)

尝试$scope.$digest()之后打电话deleteAccount这是必需的,因为测试没有摘要周期与在浏览器中正常运行一样的摘要周期。

$scope.deleteAccount($scope.accounts[0]);
$scope.$digest();
expect($scope.accounts).toEqual([{_id: 2}, {_id: 3}]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TypeError:$ scope在Jasmine的Angular控制器单元测试中未定义

来自分类Dev

Angular控制器继承变量而没有$ scope

来自分类Dev

Jasmine / Angular.js $ scope在加载控制器上未定义

来自分类Dev

Angular.js从服务向控制器$ scope传递错误消息

来自分类Dev

$ scope是否自动注入到Angular js中的控制器?

来自分类Dev

无法从Angular JS的控制器函数中访问$ scope变量

来自分类Dev

Angular.js将错误消息从服务传递到控制器$ scope

来自分类Dev

从指令更改控制器$ scope

来自分类Dev

使Angular检测$ scope中的更改

来自分类Dev

Angular.js虽然控制器/工厂拥有数据,但查看空/未从$ scope提取数据

来自分类Dev

Angular.js“ Controller as ...” + $ scope。$ on

来自分类Dev

Angular.js:$ scope与范围

来自分类Dev

Angular.js:$ scope与范围

来自分类Dev

Angular新路由器将$ scope注入控制器

来自分类Dev

Angular JS-单击负载控制器功能

来自分类Dev

Angular JS控制器功能未介入

来自分类Dev

$ scope.myVariable未在控制器中更新为Angular-ui引导模态

来自分类Dev

明确地将控制器与Angular Scope对象相关联

来自分类Dev

单击绑定指令以更新控制器$ scope后,是否需要调用Angular的$ apply?

来自分类Dev

Angular控制器中的函数未将数据返回到$ scope变量

来自分类Dev

$ scope.form。$ error在Angular控制器中未定义

来自分类Dev

$ scope.myVariable在angular-ui引导模态的控制器中未更新

来自分类Dev

Angular控制器中的函数未将数据返回到$ scope变量

来自分类Dev

$ scope.form。$ error在Angular控制器中未定义

来自分类Dev

如何在指令链接中访问angular $ scope控制器?

来自分类Dev

在没有$ scope或$ watch的情况下跨Angular控制器访问函数

来自分类Dev

Angular服务无法正确更新我的控制器中的$ scope.data

来自分类Dev

Angular $scope.value 在评估值并通过控制器发送时未更新

来自分类Dev

指令的控制器的Angular JS更改属性

Related 相关文章

  1. 1

    TypeError:$ scope在Jasmine的Angular控制器单元测试中未定义

  2. 2

    Angular控制器继承变量而没有$ scope

  3. 3

    Jasmine / Angular.js $ scope在加载控制器上未定义

  4. 4

    Angular.js从服务向控制器$ scope传递错误消息

  5. 5

    $ scope是否自动注入到Angular js中的控制器?

  6. 6

    无法从Angular JS的控制器函数中访问$ scope变量

  7. 7

    Angular.js将错误消息从服务传递到控制器$ scope

  8. 8

    从指令更改控制器$ scope

  9. 9

    使Angular检测$ scope中的更改

  10. 10

    Angular.js虽然控制器/工厂拥有数据,但查看空/未从$ scope提取数据

  11. 11

    Angular.js“ Controller as ...” + $ scope。$ on

  12. 12

    Angular.js:$ scope与范围

  13. 13

    Angular.js:$ scope与范围

  14. 14

    Angular新路由器将$ scope注入控制器

  15. 15

    Angular JS-单击负载控制器功能

  16. 16

    Angular JS控制器功能未介入

  17. 17

    $ scope.myVariable未在控制器中更新为Angular-ui引导模态

  18. 18

    明确地将控制器与Angular Scope对象相关联

  19. 19

    单击绑定指令以更新控制器$ scope后,是否需要调用Angular的$ apply?

  20. 20

    Angular控制器中的函数未将数据返回到$ scope变量

  21. 21

    $ scope.form。$ error在Angular控制器中未定义

  22. 22

    $ scope.myVariable在angular-ui引导模态的控制器中未更新

  23. 23

    Angular控制器中的函数未将数据返回到$ scope变量

  24. 24

    $ scope.form。$ error在Angular控制器中未定义

  25. 25

    如何在指令链接中访问angular $ scope控制器?

  26. 26

    在没有$ scope或$ watch的情况下跨Angular控制器访问函数

  27. 27

    Angular服务无法正确更新我的控制器中的$ scope.data

  28. 28

    Angular $scope.value 在评估值并通过控制器发送时未更新

  29. 29

    指令的控制器的Angular JS更改属性

热门标签

归档