【发布时间】:2017-03-22 22:15:20
【问题描述】:
在过去的几天里,我浏览了整个 SO 和互联网,但我无法弄清楚我错过了什么。 (角度 1.4.7)
我正在开发的应用程序很大,每个控制器往往有很多依赖项;本地服务和第三方。我模拟模块,并注入依赖项。但是,我发现如果我不模拟这些依赖项注册到的模块,我将收到“[$injector:unpr] Unknown provider:”错误。更糟糕的是,这些依赖项可能还有其他依赖项,现在我要陷入“angular.mock.module”的兔子洞——所有这些也是如此。如果我设法模拟了所有模块,它就可以工作。
我确定这不正确,但没有博客文章、现有规范文件或视频提及类似问题。我肯定错过了什么。无论我使用 ngMock 还是 BardJS 之类的助手,都会发生这种情况。
我了解模拟服务的概念,但我认为这在这里不太适用。我不会深入研究 angular ui bootstrap 并开始一一嘲笑一切。下面的测试按原样工作。如果控制器中有另一个依赖项,例如“DataService”,我将不得不模拟它的模块和它的所有依赖模块。提前致谢!我知道这一定很简单。
describe("HomeController", function() {
beforeEach(angular.mock.module("app.home"));
beforeEach(angular.mock.module("app.notify"));
beforeEach(angular.mock.module("ngDialog"));
describe("controller", function() {
var scope;
var controller;
var HomeController;
beforeEach(inject(function($rootScope, _Notify_, _ngDialog_, $controller) {
scope = $rootScope.$new();
controller = $controller;
HomeController = controller("HomeController", {
$scope: scope
});
Notify = _Notify_;
ngDialog = _ngDialog_;
}));
it('should exist', function() {
expect(HomeController).to.be.defined;
})
});
【问题讨论】:
标签: angularjs testing mocha.js karma-mocha