我正在尝试设置测试,我们使用的是Angular 1.5,TSify和Karma。我很亲密,但是我遇到了一个我不太正确的问题:
我正在按照此处描述的设置进行操作:https://github.com/cmlenz/tsify-test(此示例不包括角度)
我从angular-mocks中收到错误:“无法设置未定义的属性'mock'
那必须是计时事物或范围事物 - 角度模拟加载太快,或者浏览器正在包含角度变量的范围,并且模拟无法看到它。不知道。
以下是我的karma.conf.js文件的相关部分:
frameworks: ['browserify', 'jasmine'],
files: [
'https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js',
'./node_modules/angular-mocks/angular-mocks.js',
'./modules/**/*.spec.ts'
],
exclude: [],
preprocessors: {
'**/*.ts': 'browserify'
},
browserify: {
debug: true,
plugin: [
['tsify']
]
},
这必须与我加载模拟的方式有关 - 我的角度应用程序没有使用它,只是测试,因此必须与它有关。
任何提示?
答案 0 :(得分:1)
angular-mocks
需要在angular
之后加载,并且当前的Karma配置中没有发生 - angular
在您需要加载时才会加载.ts
其中一个.spec.ts
文件所依赖的angular
个文件之一。
一种解决方案是添加一个同时需要angular-mocks
和.spec.ts
的附加文件,并确保该文件位于Karma files
中的require-angular-mocks.js
个文件之前配置。
例如,可以创建名为require('angular');
require('angular-mocks');
的文件:
angular-mocks
可以添加到Karma配置中(替换node_modules
下的files: [
'https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js',
'./require-angular-mocks.js',
'./modules/**/*.spec.ts'
],
preprocessors: {
'**/*.js': 'browserify',
'**/*.ts': 'browserify'
},
):
angular
这应该确保以正确的顺序加载angular-mocks
和.js
并在您的规范之前加载。请注意,如果它是preprocessors
文件,则您需要在Karma的{{1}}配置中添加其他条目。