Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS+RequireJS+Karma测试设置_Angularjs_Unit Testing_Requirejs_Karma Runner - Fatal编程技术网

AngularJS+RequireJS+Karma测试设置

AngularJS+RequireJS+Karma测试设置,angularjs,unit-testing,requirejs,karma-runner,Angularjs,Unit Testing,Requirejs,Karma Runner,我正在尝试为现有的中型AngularJS+RequireJS应用程序设置Karma单元测试。我碰到了一堵墙,我在网上找到的所有东西都是针对小型应用程序的,这些应用程序没有那么复杂的测试设置。我想我误解了测试本身运行之前发生的一个关键部分,如果有人能帮我指出正确的方向,我将不胜感激 应用程序运行良好,因此RequireJS设置正确。测试似乎设置正确,加载了它需要的所有文件、依赖项、应用程序文件、测试,并尝试运行测试。此时的问题是,我的应用程序文件没有找到它们所需要的所有依赖项。我将以如下错误结束:

我正在尝试为现有的中型AngularJS+RequireJS应用程序设置Karma单元测试。我碰到了一堵墙,我在网上找到的所有东西都是针对小型应用程序的,这些应用程序没有那么复杂的测试设置。我想我误解了测试本身运行之前发生的一个关键部分,如果有人能帮我指出正确的方向,我将不胜感激

应用程序运行良好,因此RequireJS设置正确。测试似乎设置正确,加载了它需要的所有文件、依赖项、应用程序文件、测试,并尝试运行测试。此时的问题是,我的应用程序文件没有找到它们所需要的所有依赖项。我将以如下错误结束:

Error: [$injector:unpr] Unknown provider: $resourceProvider <- $resource <- ClipboardResource <- ClipboardService 
Mock正在引入所有DEP并引导应用程序,如下所示:

require([
     /* Angular application deps */
      'jquery', 
      'angular', 
      'angular-animate', 
      'angular-sanitize', 
      'angular-cookies',
      'angular-resource',
      'angular-route',
      'angular-mocks',

      'app.module' // loads all the other modules, including app.clipboard and app.common
], function($, angular) {
              $(function() { 
                /** Only Angular deps and addons get passed into this */
                var app = angular.bootstrap(document, [ 
                  'ngAnimate', 
                  'ngSanitize', 
                  'ngCookies',
                  'ngResource',
                  'ngRoute',
                  'ngMock',
                  'app'
                  ]);
                return app;
              });
});
我怀疑“mock.js”是罪魁祸首,但我不知道为什么。我不明白为什么:

1如果我需要在测试文件的顶部添加“mock”,为什么当ClipboardResource尝试注入它时ngResource不在那里

2为什么我需要在每次测试之前定义模块

module('app.clipboard');
module('app.common');
既然mock.js需要app.module,那么它们不应该已经被mock.js拉进来了吗


我意识到这是相当抽象的-我肯定是在反对这个应用程序的大小!提前感谢您的帮助。

您不应该为了运行karma测试而启动angularJS应用程序,您是否有test-main.js?
module('app.clipboard');
module('app.common');