【问题标题】:Additional dependencies on other services in angular unit test角度单元测试中对其他服务的附加依赖
【发布时间】:2016-07-14 17:47:06
【问题描述】:
describe('Controller:explorerCtrl', function() {
'use strict';
var explorerCtrl;
var explorerService;
var listService;
var scope;
var $httpBackend;
var aggregatedPods_;
var $state;
var $mdDialog;
var StateService;
var spy;

beforeEach(module(
'ui.router', explorer, kpi,
list));

 beforeEach(inject(function(
_$controller_, _$httpBackend_, _$rootScope_, _explorerService_, _$state_,
_listService_) {
scope = _$rootScope_.$new();
listService = _listService_;
aggregatedPods_ = {};
explorerService = _explorerService_;
spy = jasmine.createSpy();
StateService = {go: spy};
$httpBackend = _$httpBackend_;
$state = _$state_;
explorerCtrl =
_$controller_('explorerCtrl', {$scope: scope, $state: StateService});


}));
});

嗨, 我正在尝试为我的单独模块编写角度测试用例。不幸的是,我上面的列表模块分解了我的测试用例。我有公共服务listServices($mdDialog) 并直接在我的列表控制器(列表模块)中使用。当我尝试运行我的角度单元测试时,我收到了一个未知错误$provider $mdDialogProvider <- $mdDialog <- listService。在这种情况下我该怎么办?

我已经尝试将$mdDialog 注入$inject 函数。仍然有同样的错误。请纠正我做错的地方。

 beforeEach(inject(function(
  _$controller_, _$httpBackend_, _$rootScope_, _explorerService_, _$state_,
  _listService_ _$mdDialog_);

【问题讨论】:

    标签: angularjs unit-testing


    【解决方案1】:

    我认为您需要使用 $provide 注入 $mdDialog,并且您需要像这样在控制器中注入 $mdDialog

    beforeEach(function() {
        module(function(_$provide_) {
            _$provide_.service('$mdDialog', function() {});
        });
    });
    
    beforeEach(inject(function(
        _$controller_, 
        _$httpBackend_, 
        _$rootScope_, 
        _explorerService_, 
        _$state_, 
        _listService_,
        _$mdDialog_) {
    
         // ...
    }));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-02
      • 2016-01-19
      • 2023-04-09
      • 1970-01-01
      • 2020-07-10
      • 2013-09-26
      • 1970-01-01
      • 2012-12-23
      相关资源
      最近更新 更多