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

标签 javascript angularjs karma-jasmine

我在 Angular JS 中有以下 Controller

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');
  }));

});

enter image description here

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

最佳答案

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

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');
  }));

});

关于javascript - 测试 $state.go 在 Angular JS 规范中给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31313158/

相关文章:

http - Angular 2 RC6 测试 HTTP.get 抛出错误 get() 方法不存在

javascript - 鼠标悬停在 kineticjs 矩形事件上

javascript - NodeJS Html-pdf : fs. readfilesync 如何异步/等待

javascript - 如何使用 Javascript 设置 HTML 输入日期范围

javascript - Angular 安全缩小

angular - 无法监视 window.confirm()

javascript - xhtml 验证 javascript

html - Angularjs如何计算两张表的总和值?

javascript - Angularjs 在创建 dom 元素时的性能,纯 js 与 jqlite

karma-runner - 尝试安装 Karma 时出错