我正在使用karma Jasmine为angularjs应用程序编写单元测试。当我试图运行命令 karma start 时,它会抛出一个错误,例如未捕获的ReferenceError:未定义的定义。基本上我正在尝试加载一个单独的模块(其文件以一个define关键字开头。)在我的应用程序模块中使用karma配置文件在文件部分中具有依赖关系。
我不知道为什么会这样,任何帮助都会受到高度赞赏。
答案 0 :(得分:1)
我有类似的问题,找到解决方案并不容易。 下次提供一些代码,在这种情况下是你的Karma和Jasmine配置文件,因为它们负责这类问题。 您可能尚未使用或尚未为Karma配置RequireJS。 这个链接应该会有所帮助。 Karma - RequireJS documentation
只需在控制台中输入'karma init',为Require.js选择“是”。链接中的更多细节。
非常重要的是拥有正确的文件夹结构并在您拥有 karma.conf.js 和 test-main.js (RequireJS配置文件)的地方播放。
我决定在经过数小时的研究和试验以及错误后使用的示例结构。
<IfModule mod_headers.c>
<filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$">
Header set Cache-Control "max-age=2678400, public"
</filesmatch>
<filesmatch "\.(html|htm)$">
Header set Cache-Control "max-age=7200, private, must-revalidate"
</filesmatch>
<filesmatch "\.(pdf)$">
Header set Cache-Control "max-age=86400, public"
</filesmatch>
<FilesMatch "\.(js|css)$">
ExpiresActive On
ExpiresDefault "access plus 1 weeks"
</FilesMatch>
karma.conf.js
.
- karma
├── karma.conf.js
├── build
| ├── js
| └── tests
| ├── test-main.js
| ├── tes
测试main.js
// Karma configuration
// Generated on Fri Mar 16 2018 09:14:49 GMT+0100 (CET)
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
frameworks: ['jasmine', 'requirejs'],
// list of files / patterns to load in the browser
files: [
'build/tests/test-main.js',
{pattern: 'build/**/*.js', included: false},
{pattern: 'documents/exampleData/**/*.js', included: false},
{pattern: 'node_modules/**/*-min.js', included: false},
{pattern: 'node_modules/d3/build/d3.js', included: false},
{pattern: 'node_modules/jquery/dist/jquery.min.js', included: false},
{pattern: 'build/tests/**/*.js', included: false},
],
// list of files / patterns to exclude
exclude: [
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress'],
// web server port
port: 9876,
// enable / disable colors in the output (reporters and logs)
colors: true,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: true,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['Chrome'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false,
// Concurrency level
// how many browser should be started simultaneous
concurrency: Infinity
})
}
现在这个解决方案可能并不完美,但它确实有效。如果我在研究开始时能找到类似的东西,我将非常满意。 当我对测试框架配置的最佳实践有点熟悉时,我会更新它。