我正在尝试为我的Angular.js项目设置测试,并且我不断获得" $ injector:nomod,Module'结果'不可用!你要么拼写错误......"错误。我确信我包括"结果" "文件中的模块"数组内部" karma.config.js",基本上它看起来像这样:
files: [
'../javascripts/jquery-2.1.4.min.js',
'../jquery-ui/jquery-ui.min.js',
'../D3/d3.js',
'libs/angular.min.js',
'libs/angular-route.min.js',
'libs/angular-animate.min.js',
'libs/selectize.js',
'libs/angular-selectize.js',
'libs/angular-mocks.js',
'simulator.js',
'*.js',
'services/**/*.js',
'qa/tests-*.js'
],
...
我最初认为主模块的排序:'模拟器' (在simulator.js'文件中定义)是错误的,所以我特意将它向上移动,之前 其他模块,如下面的stackoverflow线程建议:
Angular module not available in Karma Jasmine test run
没有帮助。然后我尝试确保以与我的角度应用程序相同的顺序导入文件。主条目文件(angular-mocks.js和qa / tests - * .js除外),导入每个文件,而不是使用通配符,但没有成功。
Jasmine肯定会进入测试文件,但偶然发现我试图导入模块的行#34;结果":
describe('simulator.chartService', function() {
var chartService;
var graphConfig;
console.log("instantiating module result");
beforeEach(module('result'));
console.log("finished instantiating");
beforeEach(inject(function($injector) {
graphConfig = $injector.get('graphConfig');
chartService = $injector.get('chartService');
}));
it('should be created', function() {
expect(chartService.calcColors(10)).not.toBeNull();
});
});
因此,我发现错误发生在两个console.log()语句之间。
我怀疑我的文件在数组内排序仍然有问题"文件" in" karma.config.js"。我有主模块"模拟器"这取决于其他模块:
angular.module('simulator', ['ngRoute','ngAnimate','selectize','newexp2','newexp','login','edit','exps', 'result','templates','commons'])
模块' newexp2',' newexp','登录','编辑',' exps',& #39;结果','模板'都依赖于模块' commons'。
如何在"文件中正确导入相互依赖的模块"阵列? 它是否足以放置" simulator.js",主要模块,高于所有其他模块, 或者我还需要在" commons.js"?
之前放置所有其他模块另一个我的怀疑是我从官方角度网站下载的angular.js库版本" angular-mocks.js",可能与我正在使用的其他模块不兼容。我和#34; angular-animate.js"有一个问题。之前的文件。
只要我用$(function(){...})
包围我的测试代码(并且所有其他模块都被它包围),它在导入result
模块时不会产生错误,所以我开始看到两个{ {1}}语句之间没有错误,但是,这会产生一些未知错误,导致我无法调用console.log()
部分,而当我不用it
包围它时,{调用{1}}测试,但模块$(function(){...})
导入失败。
到目前为止,我几乎陷入困境,不知道在哪里移动以及尝试什么。任何建议都将不胜感激。
答案 0 :(得分:0)
好的,我明白了。问题是我的所有角度代码都包含在#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXWDS 20
#define MAXCHR 60
int main (int argc, char **argv) {
char line[MAXCHR] = {0};
char *words[MAXWDS] = {NULL};
FILE *pFile = NULL;
size_t i, index = 0;
/* validate sufficient input */
if (argc < 2 ) {
fprintf (stderr, "error: insufficient input, usage: %s filename\n", argv[0]);
return 1;
}
/* open file provided on command line for reading */
pFile = fopen (argv[1], "r");
if (!pFile) {
fprintf (stderr, "error: file open failed '%s'.\n", argv[1]);
return 1;
}
while (fgets (line, 60, pFile)) /* read each line in file */
{
size_t len = strlen (line);
/* strip trailing newline (or carriage return newline ) */
while (len && (line[len-1] == '\n' || line[len-1] == '\r'))
line[--len] = 0; /* overwrite with null-terminating char */
words[index++] = strdup (line); /* allocate & copy */
if (index == MAXWDS) /* check pointer limit */
break;
}
if (pFile != stdin) fclose (pFile);
/* output in a single line */
for (i = 0; i < index; i++) {
printf (" %s", words[i]);
free (words[i]); /* free allocated memory */
}
putchar ('\n');
return 0;
}
内。解决方案是删除所有$(function(){...})
,然后重新排序主条目.html文件中的javascript导入,然后所有测试开始运行良好。
用以下内容标记为重复的问题可能更好: