html - 如何访问 karma 测试用例中的 Controller 功能?

标签 html angularjs karma-runner

我是 angular 和 karma 的新手。

在 Angular 我有一个如下所示的 Controller

angular.module('login').controller('LoginCtrl', function ($scope, $location) {
    var vm = this;
    $scope.text = 'Hello World!';
    vm.text = 'hi';
});

然后我写了如下的 karma 测试用例

    describe('LoginCtrl', function() {
           beforeEach(module('login'));
               beforeEach(module('auth2AdminUI'));
               var scope,ctrl,vm;

        beforeEach(inject(function($rootScope, $controller) {
          scope = $rootScope.$new();
          ctrl = $controller('LoginCtrl', {$scope: scope});
          vm = this.ctrl;
        }));

        it('Checck scope text', function () {
        expect(scope.text).toBe('Hello World!');
        });

        it('check vm text',function(){
           expect(vm.text).toBe('hi');
        })

Check scope text 测试用例通过,但 Check vmtext 失败。我不知道为什么。我的代码有任何问题,我想我正在使用 this 来访问 Controller ,这可能有问题。

错误:

  LoginCtrl
x check vm variable
  PhantomJS 1.9.8 (Windows 8 0.0.0)
  Chrome 46.0.2490 (Windows 8.1 0.0.0)
TypeError: Cannot read property 'text' of undefined

告诉我如何在 Controller 中访问变量和unsing this 关键字的函数。

最佳答案

这里的 vm 只不过是你的 Controller ,所以你可以使用 Controller 来测试变量和函数。

describe('Login Ctrl Description', function () {
        var LoginCtrl;
        beforeEach(inject(function ($rootScope) {
            scope = $rootScope.$new();

            // Create Login controller
            LoginCtrl = $controller('LoginCtrl', {
                $scope: scope
            });
        }));
        it('check vm text', function () {
            expect(LoginCtrl.text).toBe('hi');
        })
    });

关于html - 如何访问 karma 测试用例中的 Controller 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33474207/

相关文章:

html - CSS 显示 :Inline Block issue

javascript - Angular 选择框在 mozilla、Internet Explorer (bootstrap-select) 中不显示

javascript - 如何在 ng-if 中传递 ng-repeat 变量?

javascript - Angular : 3 different ng-repeat with the same filter, 不返回任何内容时显示消息(?)

coffeescript - 使用 Karma、browserify 和 Coffeescript 测试覆盖率

javascript - karma 无法加载junits插件

html - 具有两个元素双倍高度的 4x3 网格

javascript - 如何更改 CKEditor 标题下拉列表中的字体标签?

jquery - ASP.Net MVC Recaptcha Jquery Ajax 问题

json - 如何从 karma 测试访问 json 文件