2016-03-07 84 views
0

我已經看到這個症狀發佈其他問題,最接近我的問題是這個離子問題:要求/ Angular/Karma/UI路由器 - 錯誤:無法解析'登陸'狀態''

Could not resolve '...' from state ''

PhantomJS 1.9.8(Mac OS X的0.0.0)控制器:ContainerCtrl測試失敗 錯誤:無法解析從狀態 '登陸' ''

我是新來的對Angular進行Karma測試,並且很難調試範圍問題。

app.js

.config(function($stateProvider, $urlRouterProvider) { 
    // For any unmatched url, redirect to landing 
    $urlRouterProvider.otherwise("/"); 

    // Now set up the states 
    $stateProvider 
    .state('guide', { 
     url: "/guide", 
     templateUrl: "views/guide.html", 
     controller: 'SurveyController as main' 
    }) 
    .state('stop', { 
     url: "/stop", 
     templateUrl: "views/stop.html", 
     controller: 'StopCtrl as stop' 
    }) 
    .state('landing', { 
     url: "/", 
     templateUrl: "views/landing.html", 
     controller: 'AboutCtrl as about' 
    }); 
}); 

containerSpec.js

define(['angular', 'angular-mocks', 'app'], function(angular, mocks, app) { 
'use strict'; 

describe('Controller: ContainerCtrl', function() { 

    var ContainerCtrl, $state; 

    beforeEach(angular.mock.module('app.controllers.ContainerCtrl', 'ui.router')); 


    beforeEach(angular.mock.inject(function($rootScope, $controller, _$state_) { 
    //create an empty scope 
    ContainerCtrl = $rootScope.$new(); 
    $state = _$state_; 
    //declare the controller and inject our empty scope 
    $controller('ContainerCtrl', { $scope : ContainerCtrl }); 

    })); 

    }); 
}); 

container.js

define([ 
    'angular', 
    'services/dataservice'], function (
     angular, 
     dataService // jshint ignore:line 
     ) { 
'use strict'; 

angular.module('oslerApp.controllers.ContainerCtrl', []) 
    .controller('ContainerCtrl', [ 
      '$scope', 
      '$rootScope', 
      '$state', 
       function(
        $scope, 
        $rootScope, 
        $state) { 

      $state.go('landing'); 

    }]); 

});

更新: 更改爲logLevel:config.LOG_DEBUG,我發現Spec文件的加載順序在app.js和ui.router文件之前。

INFO [PhantomJS 1.9.8 (Mac OS X 0.0.0)]: Connected on socket B-PFcQHXMLMqx8cOoznu with id 19321969 
DEBUG [launcher]: PhantomJS (id 19321969) captured in 4.068 secs 
DEBUG [web-server]: serving: /deploy/node_modules/karma/static/context.html 
DEBUG [web-server]: serving (cached): /deploy/node_modules/requirejs/require.js 
DEBUG [web-server]: serving (cached): /deploy/node_modules/karma-requirejs/lib/adapter.js 
DEBUG [web-server]: serving (cached): /deploy/test/test-main.js 
DEBUG [web-server]: serving (cached): /deploy/bower_components/jquery/dist/jquery.js 
DEBUG [web-server]: serving (cached): /deploy/node_modules/karma-jasmine/lib/jasmine.js 
DEBUG [web-server]: serving (cached): /deploy/node_modules/karma-jasmine/lib/boot.js 
DEBUG [web-server]: serving (cached): /deploy/node_modules/karma-jasmine/lib/adapter.js 
DEBUG [web-server]: serving (cached): /deploy/bower_components/angular/angular.js 
DEBUG [web-server]: serving (cached): /deploy/test/spec/controllers/containerSpec.js 
DEBUG [web-server]: serving (cached): /deploy/test/spec/services/dataserviceSpec.js 
DEBUG [web-server]: serving (cached): /deploy/app/scripts/app.js 
DEBUG [web-server]: serving (cached): /deploy/bower_components/angular-ui-router/release/angular-ui-router.js 
DEBUG [web-server]: serving (cached): /deploy/app/scripts/services/dataservice.js 
DEBUG [web-server]: serving (cached): /deploy/app/scripts/controllers/container.js 
+0

所以'containerSpec.js'中的$ state是未定義的? – GONeale

+0

看起來這樣。是。 – vars

+0

哦,等等,你正試圖通過你的$ state.go命令去登陸,但是你還沒有在你的app.js中定義一個'landing'狀態。解決。 – GONeale

回答

1

您正在試圖通過您$state.go命令去登陸狀態,但你有沒有在你的app.js.定義的狀態登陸解決這個問題,看看你如何去。

+0

我試圖通過刪除任意措辭('登陸')和使用基本術語('索引')來使這個最香草,但忘記在控制器片段中做出這種改變。這導致我們走錯了路。道歉。狀態在我的app.js中正確定義。 – vars

+0

那麼現在這個地方離開你了嗎? – GONeale