使用业力测试不使用$ scope的控制器

天鹰座

我按照docs.angularjs.org的说明使用业力测试了控制器,它运行良好。但是我想知道是否可以测试不使用$ scope的控制器?

测试此控制器是可以的:

angular.module('starter.controllers')
.controller('PasswordController', function PasswordController($scope)
{
    $scope.password = '';
    $scope.grade = function()
    {
        var size = $scope.password.length;
        if (size > 8) {
            $scope.strength = 'strong';
        } else if (size > 3) {
            $scope.strength = 'medium';
        } else {
            $scope.strength = 'weak';
        }
    };
});

但我想测试一下:

angular.module('starter.controllers')
.controller('PasswordController', function PasswordController()
{
    var myController = this;
    myController.password = '';
    myController.grade = function()
    {
        var size = myController.password.length;
        if (size > 8) {
            myController.strength = 'strong';
        } else if (size > 3) {
            myController.strength = 'medium';
        } else {
            myController.strength = 'weak';
        }
    };
});

测试代码如下:

describe('PasswordController', function()
{
    beforeEach(module('starter.controllers'));

    var $controller;

    beforeEach(inject(function(_$controller_){
        $controller = _$controller_;
    }));

    describe('$scope.grade', function() {
        var $scope, controller;

        beforeEach(function() {
            $scope = {};
            //This line doesn't work with the second controller
            controller = $controller('PasswordController', { $scope: $scope});
        });

        it('sets the strength to "strong" if the password length is >8 chars', function() {
            $scope.password = 'longerthaneightchars';
            $scope.grade();
            expect($scope.strength).toEqual('strong');
        });
    });
});
威威

这应该工作:

describe('PasswordController', function()
{
    beforeEach(module('starter.controllers'));

    var $controller;

    beforeEach(inject(function(_$controller_){
        $controller = _$controller_;
    }));

    describe('$scope.grade', function() {
        var controller;

        beforeEach(function() {
            controller = $controller('PasswordController', {});
        });

        it('sets the strength to "strong" if the password length is >8 chars', function() {
            controller.password = 'longerthaneightchars';
            controller.grade();
            expect(controller.strength).toEqual('strong');
        });
    });
});

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用业力测试不使用$ scope的控制器

来自分类Dev

使用业力测试angularjs时初始化控制器时出错

来自分类Dev

在angularjs中使用业力测试控制器时出错

来自分类Dev

使用业力茉莉花进行单元测试时出现控制器错误

来自分类Dev

无法将控制器注入业力测试

来自分类Dev

在控制器中使用`this`范围时使用$ scope。$ watch

来自分类Dev

AngularJS:使用$ scope。$ watch与控制器作为语法

来自分类Dev

在AngularJS控制器和指令中使用“ this”而不是“ scope”

来自分类Dev

如何在指令模板中使用控制器$ scope

来自分类Dev

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

来自分类Dev

使用业力测试运行器进行多种聚合物元素测试

来自分类Dev

使用业力测试运行器进行多种聚合物元素测试

来自分类Dev

错误未知提供程序:$ scopeProvider <-使用$ injector将$ scope注入控制器时的$ scope

来自分类Dev

我可以使用业力启动测试服务器吗?

来自分类Dev

我可以使用业力启动测试服务器吗?

来自分类Dev

业力测试似乎未加载我的Angularjs控制器

来自分类Dev

业力/茉莉花测试自定义指令控制器

来自分类Dev

茉莉花+业力+角度测试创建控制器

来自分类Dev

Angular测试使用RouteParams的控制器

来自分类Dev

使用会话测试Rails控制器

来自分类Dev

使用Mockery的Laravel控制器测试

来自分类Dev

Angular测试使用RouteParams的控制器

来自分类Dev

使用VisualStudioOnline测试控制器设置

来自分类Dev

如何在不使用angularJS的$ scope的情况下将对象从控制器传递到指令

来自分类Dev

使用ng-disable禁用角度按钮,使用$ scope var在控制器中

来自分类Dev

如何将使用$ scope的函数包含/注入到angularjs的控制器中?

来自分类Dev

如何使用angularjs在mvc中将数据从控制器获取到$ scope

来自分类Dev

为什么将控制器声明为内部变量或使用$ scope

来自分类Dev

AngualrJs:我是否需要在控制器中使用$ scope?

Related 相关文章

  1. 1

    使用业力测试不使用$ scope的控制器

  2. 2

    使用业力测试angularjs时初始化控制器时出错

  3. 3

    在angularjs中使用业力测试控制器时出错

  4. 4

    使用业力茉莉花进行单元测试时出现控制器错误

  5. 5

    无法将控制器注入业力测试

  6. 6

    在控制器中使用`this`范围时使用$ scope。$ watch

  7. 7

    AngularJS:使用$ scope。$ watch与控制器作为语法

  8. 8

    在AngularJS控制器和指令中使用“ this”而不是“ scope”

  9. 9

    如何在指令模板中使用控制器$ scope

  10. 10

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

  11. 11

    使用业力测试运行器进行多种聚合物元素测试

  12. 12

    使用业力测试运行器进行多种聚合物元素测试

  13. 13

    错误未知提供程序:$ scopeProvider <-使用$ injector将$ scope注入控制器时的$ scope

  14. 14

    我可以使用业力启动测试服务器吗?

  15. 15

    我可以使用业力启动测试服务器吗?

  16. 16

    业力测试似乎未加载我的Angularjs控制器

  17. 17

    业力/茉莉花测试自定义指令控制器

  18. 18

    茉莉花+业力+角度测试创建控制器

  19. 19

    Angular测试使用RouteParams的控制器

  20. 20

    使用会话测试Rails控制器

  21. 21

    使用Mockery的Laravel控制器测试

  22. 22

    Angular测试使用RouteParams的控制器

  23. 23

    使用VisualStudioOnline测试控制器设置

  24. 24

    如何在不使用angularJS的$ scope的情况下将对象从控制器传递到指令

  25. 25

    使用ng-disable禁用角度按钮,使用$ scope var在控制器中

  26. 26

    如何将使用$ scope的函数包含/注入到angularjs的控制器中?

  27. 27

    如何使用angularjs在mvc中将数据从控制器获取到$ scope

  28. 28

    为什么将控制器声明为内部变量或使用$ scope

  29. 29

    AngualrJs:我是否需要在控制器中使用$ scope?

热门标签

归档