Javascript 测试$state.go在Angular JS规范中给出错误

Javascript 测试$state.go在Angular JS规范中给出错误,javascript,angularjs,karma-jasmine,Javascript,Angularjs,Karma Jasmine,我有下面的控制器在角JS describe('Controller: homeCtrl', function () { beforeEach(module('incident')); var homeCtrl, $state; beforeEach(inject(function ($controller, _$state_) { $state = _$state_; homeCtrl = $controller('homeCtrl', {$state: $

我有下面的控制器在角JS

describe('Controller: homeCtrl', function () {
  beforeEach(module('incident'));
  var homeCtrl, $state;

  beforeEach(inject(function ($controller, _$state_) {
      $state = _$state_;
      homeCtrl = $controller('homeCtrl', {$state: $state});
  }));

  it('to be defined', function () {
    expect( homeCtrl).toBeDefined();
  });

  it('to be defined state', inject(function ($state) {
      $state.expectTransitionTo('incidents');
  }));
});
在为$state.go编写规范时,如下图所示,它给出了错误:

describe('Controller: homeCtrl', function () {
  beforeEach(module('incident'));
  var homeCtrl, $state;

  beforeEach(inject(function ($controller, _$state_) {
      $state = _$state_;
      homeCtrl = $controller('homeCtrl', {$state: $state});
  }));

  it('to be defined state', inject(function ($state) {
      $state.expectTransitionTo('incidents');
  }));

});


任何建议都会有帮助,或者任何示例代码都会显示如何测试此$state.go。

ExpectTransition
不是ui路由器天生附带的功能。我假设您是从gist中看到的,在这种情况下,您需要使用gist并设置
stateMock
模块

ExpectTransition
不是ui路由器固有的功能。我假设您是从gist中看到的,在这种情况下,您需要使用gist并设置
stateMock
模块

您需要监视状态以在状态之间进行转换。以下是代码

describe('Controller: homeCtrl', function () {
  beforeEach(module('incident'));
  var homeCtrl, $state;

  beforeEach(inject(function ($controller, _$state_) {
      $state = _$state_;
       spyOn('$state','go'); spyOn($state, 'go');
       // or
       spyOn($state, 'go').andCallFake(function(state, params) {
        // This replaces the 'go' functionality for the duration of your test
       });
      homeCtrl = $controller('homeCtrl', {$state: $state});
  }));

  it('to be defined state', inject(function ($state) {
      $state.expectTransitionTo('incidents');
  }));

});

您需要监视状态才能在状态之间进行转换

describe('Controller: homeCtrl', function () {
  beforeEach(module('incident'));
  var homeCtrl, $state;

  beforeEach(inject(function ($controller, _$state_) {
      $state = _$state_;
       spyOn('$state','go'); spyOn($state, 'go');
       // or
       spyOn($state, 'go').andCallFake(function(state, params) {
        // This replaces the 'go' functionality for the duration of your test
       });
      homeCtrl = $controller('homeCtrl', {$state: $state});
  }));

  it('to be defined state', inject(function ($state) {
      $state.expectTransitionTo('incidents');
  }));

});