karma state go 无法解决“...”

karma state go could not resolve "..."

我正在尝试在我的控制器中测试一个函数,只是测试是否调用了 $state.go。我在 $state.go 上放置了一个间谍,但是当我调用该函数时,我得到 "Could not resolve 'thestate' from state ..."

这是我的控制器的功能:

function cancel(){
  $state.go('thestate', {}, {reload: true});
}

和我的测试:

it('should change state to thestate', function() {
  this.scope.cancel();
});

当它运行取消函数时,我得到一个错误 "Could not resolve 'thestate' from state ..." 但我的路线中确实有一个定义的状态。

如何模拟状态?

除非在单元测试中测试的是UI路由器,否则ui.router模块不必加载并且$state必须被模拟,以及任何其他当前规范中未测试的服务。

beforeEach(module('app', { $state: {
  go: jasmine.createSpy()
}));

...

it('...', inject(function ($state) {
  this.scope.cancel();
  expect($state.go).toHaveBeenCalledWith('thestate', {}, {reload: true});
}));