gpt4 book ai didi

javascript - 如何将 Angular Controller 注入(inject)到我的单元测试中

转载 作者:行者123 更新时间:2023-11-28 07:37:14 24 4
gpt4 key购买 nike

我真的希望这是一个微不足道的问题。是的,我有 RTFM。我实际上正在使用 Angular 记录的方式来注入(inject) Controller ,但由于某种原因我的 Controller 没有定义。这里的主要区别是我习惯于使用单模块应用程序,而这次我有一个多模块应用程序。我认为这不会有什么不同,但你就这样吧。我将直接进入代码,而不是冗长的描述:

使用 Angular 1.2.16

单元测试框架:Jasmine

app.js

 angular.module('OBB', [
// Native AngularJS DI
'ngResource', 'ngCookies',

// bunch of modules
...

// OBB Page Modules
'OBB.home', 'OBB.buckets', 'OBB.company', 'OBB.advSearch', 'OBB.users'
])

所以,我正在尝试测试 OBB.home 模块中的 Controller 。

home.js

angular.module('OBB.home', ['ui.router'])
.controller('HomeCtrl', ['$log', '$rootScope', '$scope', '$state', 'AUTH_EVENTS',
function HomeCtrl ($log, $rootScope, $scope, $state, AUTH_EVENTS) {
$scope.signInFormData = {
email: null, password: null
};
//more code...
}]);

home.spec.js

describe('Unit Home Controllers: ', function () {

var homeController, scope;

beforeEach(module('OBB.home'));

beforeEach(inject(function (_$rootScope_, $controller) {
scope = _$rootScope_.$new();
homeController = $controller('HomeCtrl', {
$rootScope: _$rootScope_,
$scope: scope,
$log: {},
$state: {},
AUTH_EVENTS: {},
});
}));

it('Home Controller is correctly instantiated', inject(function () {
expect(scope).toBeDefined(); // Pass
expect(scope.signInFormData).toBeDefined(); // Fails
}));
});

最佳答案

您需要模拟/加载您的依赖项。

describe('Unit Home Controllers: ', function () {

var homeController, scope;

beforeEach(module('OBB.home'));

beforeEach(inject(function (_$rootScope_, $controller) {
scope = _$rootScope_.$new();
homeController = $controller('HomeCtrl', {
$rootScope: _$rootScope_,
$scope: scope,
$log: {}, //You will have to add methods as needed
$state: {},
AUTH_EVENTS: {}
});
}));

it('Home Controller is correctly instantiated', inject(function () {
expect(scope).toBeDefined(); // Fails
expect(scope.signInFormData).toBeDefined(); // Fails
}));
});

关于javascript - 如何将 Angular Controller 注入(inject)到我的单元测试中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28459008/

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