angularjs - 测试中的 Angular 1.x 模拟依赖项

标签 angularjs testing mocha.js karma-mocha

在过去的几天里,我遍历了 SO 和互联网,但我无法弄清楚我遗漏了什么。 ( Angular 1.4.7)

我正在开发的应用程序很大,每个 Controller 往往有很多依赖项;本地服务和第三方服务。我模拟模块,并注入(inject)依赖项。但是,我发现如果我不同时模拟这些依赖项注册到的模块,我将得到“[$injector:unpr] Unknown provider:”错误。更糟糕的是,这些依赖项可能有其他依赖项,现在我正在深入“angular.mock.module”的兔子洞 - 也包括所有这些。如果我设法模拟了所有模块,它就可以工作。

我确定这是不正确的,但没有博客文章、现有规范文件或视频提到类似的问题。我肯定错过了什么。无论我使用 ngMock 还是像 BardJS 这样的助手,都会发生这种情况。

我理解模拟服务的概念,但我认为这并不适用于此。我不会深入研究 angular ui bootstrap 并开始一一模拟所有内容。下面的测试按原样工作。如果 Controller 中有另一个依赖项,例如“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;
            })
        });

最佳答案

好吧,我知道我错过了什么。

我不需要单独模拟每个子模块,而是需要模拟整个顶级应用程序模块。

所以上面这个:

beforeEach(angular.mock.module("app.home"));
beforeEach(angular.mock.module("app.notify"));
beforeEach(angular.mock.module("ngDialog"));

变成:

beforeEach(angular.mock.module("app"));

谢谢我!

关于angularjs - 测试中的 Angular 1.x 模拟依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42963663/

相关文章:

ruby-on-rails - RSpec 测试类方法调用实例方法

node.js - Mocha 测试突然停止,出现 : Cannot find module 'pg-native'

javascript - aws-sdk s3 上传在 Mocha 测试中无法正常工作

javascript - Angular $http.post 将日期更改为 UTC 日期

javascript - 表单提交后, Angular 删除表单验证

javascript - 用返回值初始化对象

javascript - 如何检查多个 chai-http 请求何时真正在 block 之前的 mocha 中完成?

javascript - 相当于 Angular 中的 getElementById?

unit-testing - 测试用例是按需求、按类还是按方法?

testing - 如何测试使用从另一个模块导入的客户端 API 函数的函数?