gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:28:46 24 4
gpt4 key购买 nike

我是 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com