我正在AngularJs应用程序中编写单元测试。当我直接给出状态时,例如app或abc,则它可以工作,但是当我给出类似app.xyz时,则它不在单元测试文件中给出状态。
在代码下方以获取更多理解。
一切正常。
angular.module('app.xyz', [
'ui.router',
'ngResource'
])
$stateProvider.state("state1", {
url: "/state1",
controller: 'abCtrl',
template: '<h1>Hiiiiiiii</h1>'
}).state('state2', {
url: "/state2",
controller: 'cargoCtrl',
template: '<h2>Hello</h2>'
});
TestController
describe('state changes', function() {
beforeEach(module('app.xyz'));
var $rootScope, $state;
beforeEach(inject(function(_$rootScope_, _$state_) {
$rootScope = _$rootScope_;
$state = _$state_;
}));
it('loads page 1', function(done) {
$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {
expect(toState.controller).toEqual('Controller1');
done();
});
$state.go('state1');
$rootScope.$apply();
});
it('loads page 2', function(done) {
$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {
expect(toState.controller).toEqual('Controller2');
done();
});
$state.go('state2');
$rootScope.$apply();
});
});
$ state.go('state2');它工作正常。当我打印时 控制台,然后我得到州名。
以下内容不起作用。
$stateProvider.state("app.state1", {
url: "/state1",
controller: 'abCtrl',
template: '<h1>Hiiiiiiii</h1>'
}).state('app.state2', {
url: "/state2",
controller: 'cargoCtrl',
template: '<h2>Hello</h2>'
});
控制器:
it('loads page 2', function(done) {
$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {
expect(toState.controller).toEqual('Controller2');
done();
});
$state.go('app.state2');
$rootScope.$apply();
});
上面的代码给了我未定义的状态。
据我所知,我无法获取子状态。如果我给单亲父母州,那么它正在工作。我是业力测试的新手。任何建议是
对我来说很有价值