【问题标题】:Error: [$injector:unpr] Unknown provider: $stateProvider <- $state错误:[$injector:unpr] 未知提供者:$stateProvider <- $state
【发布时间】:2023-03-21 18:17:01
【问题描述】:

在单元测试下执行会给出“错误:[$injector:unpr] 未知提供者:$stateProvider

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

【问题讨论】:

    标签: arrays angularjs unit-testing mocha.js chai


    【解决方案1】:

    您还没有加载任何模块,因此根本没有可用的服务。在你的 beforeEach 之前添加这个:

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

    【讨论】:

    • 这个答案让我朝着正确的方向前进。我忘记将angular-ui-router 添加到我在 karma.conf 中的 files 属性中。
    • 我目前非常讨厌业力,因为这实际上是必需的!有什么方法可以模拟/存根/伪造 $stateProvider 所以我不需要'ui-router'?我希望能够单独测试我的代码(因此是 UNIT 测试)并模拟所有这些其他依赖项。
    • @AaronJanes 是的。你可以使用类似这样的东西 $provide.service('$state', function ($q) { var $stateService = { current: { url: "/", views: {}, name: "root.signin" } } ; return $stateService; });
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 2016-03-26
    • 2014-07-19
    • 1970-01-01
    相关资源
    最近更新 更多