angularjs - Angular 单元测试中对其他服务的额外依赖

标签 angularjs unit-testing

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


}));
});

你好, 我正在尝试为我的单独模块编写 Angular 测试用例。不幸的是,我上面的列表模块分解了我的测试用例。我有普通服务listServices($mdDialog)并直接在我的列表 Controller (列表模块)中使用。当我尝试运行 Angular 单元测试时,出现未知错误 $provider $mdDialogProvider <- $mdDialog <- listService .这种情况怎么办?

我已经尝试注入(inject) $mdDialog进入$inject功能。仍然有同样的错误。请指正我做错的地方。

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

最佳答案

我认为您需要使用 $provide 注入(inject) $mdDialog,并且在您的 Controller 中您需要像这样注入(inject) $mdDialog:

beforeEach(function() {
    module(function(_$provide_) {
        _$provide_.service('$mdDialog', function() {});
    });
});

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

     // ...
}));

关于angularjs - Angular 单元测试中对其他服务的额外依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38380890/

相关文章:

javascript - 使用 Jest 手动模拟 React-Intl 进行快照测试

javascript - 如何在 when 函数中延迟 promise

javascript - AngularJS groupby 或过滤服务内部的对象列表而不是 HTML 模板?

javascript - 将 <a href> 设置为变量

java - 如何使用 Mockito 模拟列表方法

javascript - 什么相当于 sinonjs 中的 jasmine.createSpy().and.callFake(fn)

android - ActivityUnitTestCase 和 startActivity

javascript - 如何使用 Ionic Cordova EmailComposer 发送附件数据

javascript - 每行的 Ui-Grid 单选按钮选择

unit-testing - 有没有办法动态设置测试超时值