我是 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');
})
检查范围文本测试用例通过,但检查 vmtext 失败。我不知道为什么。我的代码有任何问题,我想我正在使用 这个 来访问 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 中取消此关键字的变量和函数。
最佳答案
这里 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/