angularjs - 错误 : $injector:unpr AngularJS Testing mocking object instances

标签 angularjs testing mocha.js

我在测试我的 AngularJS 应用程序时一直遇到问题,我尝试注入(inject)所有依赖项,但它似乎不起作用,非常感谢任何帮助:)

这是一个相当大的应用程序,我正在尝试尽可能多地分解并测试它们,但是我们有一个名为 firebaseUser 的工厂也就是说,你可以猜到一个 firebaseUser。我们还有一个名为 userInstance 的实例所以每当我尝试模拟 userInstance 时都会遇到错误。

describe('Dashboard Start Controller', function () {

  var scope, ctrl;

  beforeEach(function () {
    MockFirebase.override();
    module('noodleApp.start');
    module('noodleApp.noodleFactory');
    module('noodleApp.firebaseUser');
    module('noodleApp.start');
  });

  beforeEach(inject(function($rootScope, $controller, $injector) {
    scope = $rootScope.$new();
    ctrl = $controller('StartController', {$scope: scope});
  }));

  afterEach(function () {
    scope.$destroy();
  });

  it('should be available', function() {
    expect(ctrl).toBeDefined();
  });

  it('should init with filter being set to all', function() {
    expect(scope.filterOn).toBe('all');
  });
});

每当我运行这个测试时,我都会收到以下错误:Unknown provider: userInstanceProvider <- userInstance <- StartController

最佳答案

$controller 是对 $inject 的调用,但被视为服务。发生的情况是您正在实例化 Controller ,但由于使用了 $inject,并且您没有传递 userInstance,它会查找未找到的提供程序。您需要确保将 service/factory/resolve 传递给您的 $controller 方法。通过模拟它并将其传递给 Controller ​​,您可以隔离预期发生的情况,并在此单元测试中仅测试 Controller 。

beforeEach(inject(function($rootScope, $controller) {
    scope = $rootScope.$new();
    userInstanceMock = {
        // mock out all methods here
        foo: sinon.stub()
    }
    ctrl = $controller('StartController', {
        $scope: scope,
        userInstace: userInstaceMock
    });
}));

关于angularjs - 错误 : $injector:unpr AngularJS Testing mocking object instances,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33739514/

相关文章:

node.js - Node/Mocha 测试超时

css - AngularJS:条件语句在 Controller 的 Angular JS 方法中不起作用

javascript - 让 ng-repeat 在 AngularJS 的 $interpolate 服务中工作

java - 自建API跨域错误

regex - 创建 React App 找不到测试

mocha.js - 如何使用 Mocha 设置 Nightwatch.js 以使用 chai 断言?

javascript - 生产 Node 应用程序找不到 SVG 文件

django - 在 Django 中测试自定义管理操作

c# - 使用 dotnet test 运行标记为 [Explicit] 的测试

javascript - 无法读取未定义的属性 'status' - Mocha Chai