有没有办法运行ng test单个文件而不是整个测试套件?理想情况下,我想在编辑文件时获得最快的反馈循环,但是karma在每次保存时执行整个套件,这在构建足够大的测试套件时有点慢.
所以,我一直在寻找这个,在这里找到"类似"的答案,但不完全是我想要的.
现在,如果我想测试与因缘一个单一的文件,我需要做的fit(),fdescribe()对有问题的文件...
但是,我真正想要的是能够使用配置文件调用karma,并将其指向特定文件,因此我根本不需要修改文件,即:
karma run --conf karma.conf.js --file /path/to/specific/test_file.js
是否有可能做到这一点?还是有帮助?(使用grunt或gulp?)
我是Infinitest等连续测试产品的忠实粉丝.最近我一直在做更多的JavaScript开发,并且正在为Visua Studio寻找类似的东西,它会在保存文件后立即运行我的Jasmine测试.Mighty Moose看起来就像是.NET代码.我喜欢Karma背后的想法,但理想情况下它会与Visual Studio 2012很好地集成.
有这样的野兽吗?
visual-studio continuous-testing jasmine infinitest karma-runner
我想知道是否有人有咕噜咕噜的业力来运行一个在观看时改变的规格.这是我的配置如下.问题是行grunt.config('karma.unit.options.files',filepath); 似乎没有做任何事情,因为所有的规格仍然运行,但foo确实在业力之前获得输出:unit:run被解雇.
grunt.initConfig({
karma: {
unit: {
configFile: 'karma.conf.js',
background: true,
singleRun: false,
options: {
files: allFilesArray
}
}
},
watch: {
options: {
spawn: false,
livereload: true
},
karma: {
files: ['js/spec/**/*.spec.js', 'js/src/**/*.js'],
tasks: ['karma:unit:run']
}
}
})
grunt.event.on('watch', function (action, filepath){
console.log('foo');
grunt.config('karma.unit.options.files', filepath);
});
Run Code Online (Sandbox Code Playgroud)
是否有人在文件更改中在终端中运行了一个规范?我们有成千上万的测试,所以它开始变慢.
谢谢,亚历克斯
我正在使用Karma和Jasmine来测试我的Angular JS代码.我设法使用Karma在我的项目中运行所有测试,但如果我尝试只运行一个文件,我会收到以下错误:ReferenceError: describe is not defined.是否可以只运行一个测试文件,如果是,那么如何?
PS我正在使用Intellij IDEA.
简短版本:
如何启动Karma并让它在与Karma启动页面相同的浏览器中自动打开debug.html文件?
长版:
我不是很喜欢使用控制台记者的Karma,所以我一直在使用karma-jasmine-html-reporter-livereload输出到Karma的localhost:9876/debug.html文件.问题是,每次我开始调试会话时,我都必须单击业力打开的网页中的"调试"按钮.
我想找到一种方法让业力通过gulp任务自动打开debug.html页面.我在多个浏览器中运行测试,因此我希望在每个Karma打开的浏览器中打开debug.html页面作为第二个选项卡.当karma关闭时,我还希望能够关闭该debug.html选项卡.我尝试了很多东西,没有成功.
这是我的gulp任务.'watch'任务监视我的源TypeScript文件,并将它们编译成javascript ...没什么特别的.
gulp.task('watch-test', ['watch'], function (done) {
//start a livereload server so that the karma html
//reporter knows to reload whenever the scripts change
livereload.listen(35729);
gulp.watch('dist/src/**/*.js').on('change', livereload.changed);
new KarmaServer({
configFile: __dirname + '/karma.conf.js',
singleRun: false
}, done).start();
});
Run Code Online (Sandbox Code Playgroud) 这个带有随附博客文章的项目演示了如何将Karma与React.js一起使用,但是当你运行npm run testKarma 时,很快就会打开浏览器并快速关闭它,不允许你调试应用程序(它应该这样做).我将配置更改为singleRun: false,认为它可能会singleRun关闭应用程序.
我还补充说autoWatch: true希望它可以保持测试结果可见,但这也不起作用.
问题:如何获得业力以保持浏览器打开足够长的时间来查看测试结果并调试应用程序?
这是karma.config.js文件
var webpack = require('webpack');
module.exports = function (config) {
config.set({
// browsers: [ process.env.CONTINUOUS_INTEGRATION ? 'Firefox' : 'Chrome' ],
browsers: [ 'Chrome' ],
singleRun: true,
// autoWatch: true,
frameworks: [ 'mocha' ],
files: [
'tests.webpack.js'
],
preprocessors: {
'tests.webpack.js': [ 'webpack', 'sourcemap' ]
},
reporters: [ 'dots' ],
webpack: {
devtool: 'inline-source-map',
module: {
loaders: [
{ test: /\.js$/, …Run Code Online (Sandbox Code Playgroud) 我安装了 vscode-test-explorer 扩展以及它的子 angular-karma-test-explorer 和 jasmine-test-adapter 到我的 vscode (如这里所回答的Karma run single test)
但是,没有测试加载到测试资源管理器,它显示这些项目可供选择,但没有加载:

我的 angular-cli.json:
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"project": {
"name": "frontend-cli"
},
"apps": [
{
"name": "debug",
"root": "src",
"outDir": "dist",
"index": "index.html",
"main": "main.ts",
"polyfills": "polyfills.ts",
"test": "test.ts",
"tsconfig": "tsconfig.app.json",
"testTsconfig": "tsconfig.spec.json",
"prefix": "app",
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
],
"environmentSource": "app/environment.ts",
"environments": {
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
},
{
"name": "release",
"root": "src",
"outDir": "dist",
"index": "index.html",
"main": "main.ts",
"polyfills": "polyfills.ts",
"test": "test.ts",
"tsconfig": "tsconfig.app.json",
"testTsconfig": …Run Code Online (Sandbox Code Playgroud)我有一个可用的 Karma 设置,使用 Webpack。每当我修改测试文件或其任何依赖项时,所有测试都会运行。这一切都很好,但我真的很喜欢它只运行最少数量的测试。如果我更改测试文件,它应该只运行该测试文件。如果我更改源文件,它应该运行任何具有该源文件作为依赖项的测试文件(通过require)。
这是我的相关部分karma.config.js:
files: [
{
pattern: '**/*.test.js',
watched: true,
included: true,
served: true
},
],
preprocessors: {
'**/*.test.js': ['webpack']
},
webpack: {
resolve: {
root: path.join(__dirname, '..', 'webpack'),
extensions: ['', '.js', '.jsx'],
},
module: {
loaders: [
{
test: /.jsx?$/,
loader: 'babel-loader',
exclude: [/node_modules/],
query: {
presets: ['es2015', 'react']
}
},
]
},
},
Run Code Online (Sandbox Code Playgroud)
完整的karma.config.js文件在 gist 中。
我熟悉其他问题中提到的解决方案,包括process.env.npm_config_single_file,但这不是我想要做的。
根据我上面的配置,我希望它将每个文件作为单独的 webpack 处理,这也由 …
我希望能够为 VisualStudio 解决方案定义自定义命令/任务/宏。然后我想对在Solution Explorer.
有几种可能来执行对我来说没问题的命令:
a) 右键单击中的文件Solution Explorer并从上下文菜单中选择命令(我最喜欢的)
b) 在Solution Explorer. 然后单击工具栏上的按钮。然后该命令会以某种方式从Solution Explorer.
c) 在Solution Explorer. 然后从Task Runner Explorer. 执行的任务会以某种方式从“解决方案资源管理器”中检索所选文件
我尝试使用 VisualStudio 扩展VsCommandBuddy。但是,它不支持特定于文件的命令,请参阅
https://github.com/PaulHuizer/VsCommandBuddy/issues/21
我还试图用一个Grunt或Gulp可从启动任务Task Runner Explorer。但是,我不知道如何传递/访问当前在Solution Explorer.
https://blogs.msdn.microsoft.com/webdev/2016/01/06/task-runners-in-visual-studio-2015/
=> 是否有一个 VisualStudio 扩展可以轻松地为文件定义自定义命令?
=> 如何在脚本文件(例如 Gulp、Grunt、Webpack)中传递/访问在 SolutionExplorer 中选择的文件?
=> 您会推荐其他任何舒适的工作流程吗?
可以编写我自己的 VisualStudio 扩展。但我想其他人已经知道了解决方案。
karma-runner ×9
jasmine ×4
gruntjs ×3
gulp ×3
angular ×2
javascript ×2
angular-cli ×1
angularjs ×1
debugging ×1
infinitest ×1
node.js ×1
task ×1
webpack ×1