错误:[$injector:unpr] 未知的提供者:$stateProvider <- $state。

15
执行下面的单元测试会出现错误:"Error: [$injector:unpr] Unknown provider: $stateProvider <- $state"。我已经在karma文件中添加了angular-ui-router.min.js。
 describe("Unit tests", function() {

  var $rootScope, $injector, $state;
  console.log("hello");

  beforeEach(inject(function(_$rootScope_, _$state_, _$injector_, $templateCache) {
    console.log("hello1");
    $rootScope = _$rootScope_;
    $injector = _$injector_;
    $state = _$state_;
  }));

  describe("states", function() {
    it("verify state configuration", function() {
        var config = $state.get("DRaaS");
        console.log(config, "cc");
    });
  });
});
1个回答

31

你还没有加载任何模块,因此根本没有可用的服务。在你的 beforeEach 之前添加以下代码:

beforeEach(module('ui.router'));

6
这个答案指引了我正确的方向。我忘了在karma.conf文件的files属性中添加angular-ui-router - Raulucco
1
我目前非常讨厌Karma,因为它实际上是必需的!有没有办法模拟/存根/伪造$stateProvider,这样我就不需要要求'ui-router'了?我想能够在隔离环境中测试我的代码(因此是单元测试),并模拟所有这些其他依赖项。 - Aaron Janes
1
@AaronJanes 是的,有的。你可以像这样使用:$provide.service('$state', function ($q) { var $stateService = { current: { url: "/", views: {}, name: "root.signin" } }; return $stateService; }); - BobDoleForPresident

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接