尝试设置控制器对象时出现Jasmine错误

时间:2017-02-28 15:59:53

标签: angularjs jasmine

这是我收到的实际错误消息:

未捕获错误:[$ injector:unpr]未知提供者:formsProvider< - forms< - SignupAcclaimController

这是我的测试文件的开头:

describe("SignUp", function() {
describe("SignupAcclaimController", function () {

    beforeEach(module('CL.SignUp'));
    var controller, SignupService, $state, scope, identity;
    beforeEach(inject(function (_$controller_, _$state_, _SignupService_, _$rootScope_, _identity_) {
        $state = _$state_;
        scope = _$rootScope_.$new();
        SignupService = _SignupService_;
        identity = _identity_;

        controller = _$controller_('SignupAcclaimController', {
            $state: $state,
            SignupService: SignupService,
            identity: _identity_,
            detailsForm: mocks.form
        });

    }));........

尝试设置控制器时发生错误。 mocks.form已在此代码上方声明。

实际的控制器是:

(function() {
'use strict';

angular.module('CL.SignUp')
    .controller('SignupAcclaimController', SignupAcclaimController);

SignupAcclaimController.$inject = ['$window', '$state', '$log', 'SignupService', 'identity', 'detailsForm', 'forms', '$rootScope', '$scope', '$timeout'];

function SignupAcclaimController($window, $state, $log, SignupService, identity, detailsForm, forms, $rootScope, $scope, $timeout) {
    var vm = this,   ........

如果我将注射器功能签名更改为与实际控制器的方法签名相同,则将controller =扩展为

controller = _$controller_('SignupAcclaimController', {
            $window: _$window_,
            $state: $state,
            $log: $log,
            SignupService: SignupService,
            identity: _identity_,
            detailsForm: mocks.form,
            forms: _forms_,
            $scope: scope,
            $rootScope: _$rootScope_,
            $timeout: _$timeout_

然后错误变为:

未捕获错误:[$ injector:unpr]未知提供商:formsProvider< - 表单

0 个答案:

没有答案