- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
编辑:来自another answer我决定尝试从 karma-webpack 3.0.5 升级到 4.0.0-rc.2,并且开始出现实际错误。它开始提示 Angular 未定义,然后我意识到我正在从 tests.bundle.spec
文件导入我的 home.spec.js
文件,而不是依赖于上下文来导入它(在调试时执行此操作并忘记了它)。删除额外的导入后,我的测试成功运行!一旦允许我回答我自己的问题,我就会用答案更新这个问题。
我相当确定 karma 甚至没有加载我的测试包文件,尽管看起来是 webpack 创建了包。
我似乎无法从 tests.bundle.spec.js
或 home.spec.js
文件中看到任何 console.logs。当我设置 singleRun=false 时,刷新后在生成的 Chrome 窗口中检查控制台(测试应该重新运行),我在“网络”选项卡中看到 tests.bundle.spec.js
文件已加载,但我在控制台中看不到任何内容,并且 html 文件中未引用它。 html 页面中加载的唯一脚本是 socket.io.js
和 karma.js
。
编辑:从 Chrome 打开“调试”页面后,我确实看到我的 tests.bundle.spec.js
包正在加载,但所包含的模块都没有运行。我已将断点放入测试脚本中,甚至在 tests.bundle.spec.js
代码中(例如,在设置 require 的上下文时),但没有一个断点被触发。我一定在某个地方遗漏了一些东西,因为 Karma 从未初始化任何这些模块。我什至在 __webpack_require__ 函数中放置了断点,但它们没有被触发。所以我的模块都不需要/导入。
Webpack 确实构建了该模块,我在 yarn test
命令(运行 karma start
)的控制台输出中看到了这一点:
Entrypoint src/tests.bundle.spec = vendors~src/tests.bundle.spec.bundle.js src/tests.bundle.spec.js
[./ sync recursive home\.spec\.js$] . sync home\.spec\.js$ 192 bytes {src/tests.bundle.spec} [built]
这是我的结构/配置
结构:
-src
--app
---home
----home.js
----home.spec.js
--tests.bundle.spec.js
karma.conf.js
webpack.test.js
karma.conf.js
var webpackConfig = require('./webpack.test.js');
module.exports = function (config) {
process.env.BABEL_ENV = 'karma';
config.set({
basePath: '',
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
{
pattern: './src/tests.bundle.spec.js',
watched: false
}
],
// plugins
plugins: [
'karma-webpack',
'karma-jasmine',
'karma-sourcemap-loader',
'karma-chrome-launcher'
],
preprocessors: {
'./src/tests.bundle.spec.js': ['webpack', 'sourcemap']
},
// Webpack config
webpack: webpackConfig,
webpackServer: {
noInfo: false
},
reporters: ['progress'],
// web server port
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: [
'Chrome'
],
singleRun: false,
concurrency: Infinity
})
}
webpack.test.js
const webpack = require("webpack");
const path = require('path');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
mode: 'development',
devtool: 'eval-source-map',
entry: {
app: path.resolve(__dirname, './src/index.js')
},
output: {
path: path.resolve(__dirname, './build_app/'),
filename: 'app-[name].js',
chunkFilename: 'app-vendors.[chunkhash].js'
},
module: {
rules: [
// JavaScript source files for the LeadingReach application
{
test: /\.js$/,
exclude: /(node_modules)(\.spec\.js$)/,
rules : [
{
loader: 'babel-loader'
},
{
loader: 'eslint-loader',
options: {
emitError: true,
emitWarning: true,
failOnError: true,
globals: [
'_',
'angular',
'lrenums',
'readJSON'
]
}
}
]
},
// JavaScript test files
{
test: /\.spec.js$/,
exclude: /(node_modules)/,
use : [
'babel-loader'
]
},
// Templates (non-compiled)
{
test: /\.tpl.html$/,
exclude: /\.tpl.html2js$/,
loader: ['file-loader?name=[path][name].[ext]?[hash]', 'extract-loader', 'html-loader']
},
// LESS files
{
test: /\.less$/,
use: ['style-loader', 'css-loader', 'less-loader']
},
// CSS files
{
test: /\.css$/,
loader: ['style-loader', 'css-loader']
},
// Static files
{
test: /\.(jpe?g|gif|png|ico)$/,
use: [{
loader: 'file-loader',
options: {
name: '[name].[ext]?[hash]',
outputPath: 'assets/images/'
}
}]
},
// Font files
{
test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
use: [{
loader: 'file-loader',
options: {
name: '[name].[ext]?[hash]',
outputPath: 'fonts/'
}
}]
}
]
},
optimization: {
namedChunks: true,
splitChunks: {
chunks: "all",
minSize: 0,
cacheGroups: {
vendors: {
test: /[\\/]node_modules[\\/]/,
priority: -10,
chunks: 'all',
minSize: 0
}
}
}
},
plugins: [
// Clean build_app folder
new CleanWebpackPlugin(['build_app'], {
// Write logs to console.
verbose: true,
// perform clean just before files are emitted to the output dir
// Default: false
beforeEmit: true
}),
// Create our index.php file
new HtmlWebpackPlugin({
template: './src/index.php',
filename: 'index.php',
inject: 'head' // place scripts in head because we bootstrap the app at the end of the body
}),
// Expose _ (underscoreJS) to the global scope
new webpack.ProvidePlugin({
_: 'underscore'
})
]
};
tests.bundle.spec.js
const context = require.context('./', true, /.+home\.spec\.js$/);
console.log('================WHEEEEEE==============');
console.log(context.keys());
/*
* For each file, call the context function that will require the file and load it up here.
*/
context.keys().forEach(function(key) {
context(key);
});
home.spec.js
// Import dependencies
console.log('============HELLOOOOOOO123123123123==============');
require('angular');
require('angular-mocks');
import './home.js';
console.log('============HELLOOOOOOO==============');
describe('home section', function () {
console.log('============HELLOOOOOOO222222==============');
it('should run test', inject(function () {
expect(1).toEqual(1);
});
}
当我的测试运行时,我得到Executed 0 of 0 ERROR (0.001 secs/0 secs)
最佳答案
对我来说,这是一个与optimization.splitChunks相关的问题。当我从 karma-webpack-config 中删除它后,我的测试被发现了。
关于angularjs - karma-webpack 未运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54331636/
当运行测试 karma 似乎多次重复上一个测试时,重复测试的次数似乎取决于测试的数量和用于运行的浏览器。 如果只使用一个浏览器(PhantomJS 或 Chrome)进行一次测试,测试会显示两次,当使
我已经配置了我的 karma.conf.js 并启用了预处理,以获得有关我的测试代码覆盖率的报告。我已将此行添加到 preprocessors 部分。 preprocessors: { 'publ
我的 karma.conf.js 包括: plugins: [ 'karma-jasmine', 'karma-phantomjs-launcher', 'karma-ng-h
我刚刚开始使用 karma 对我的 Angular 应用程序进行单元测试。一切都按预期进行 Chrome 26.0 (Windows): Executed 1 of 1 Chrome 26.0 (Wi
我正在查看 karma 的报告器配置。 有一些可能的报告者:进展、点、咆哮、报道。我没有找到任何解释每个选项的详细信息。 我尝试了进度和点,它们都将日志打印到控制台,结果看起来相同。它们之间有什么区别
我使用 karma 来运行测试。我有很多测试,运行所有测试是一个非常缓慢的过程。我只想运行一个测试,以便花费更少的时间,因为所有测试都运行大约 10 分钟。 可能吗? 最佳答案 如果您使用Karma/
我还没有看到这方面的任何信息,但我想知道是否可以在一次 Karma 运行中包含多个 karma-conf.js 文件?基本上,我正在考虑为 CI 配置一个覆盖率和 tslint,以及一个只为本地开发测
我正在使用 karma 和 karma-typescript(但这不是 Angular 项目,所以我没有使用 angular-cli)。 我的测试运行中大约有一半在所有测试都通过后 生成错误,我对如何
我正在使用 Karma 进行一些单元测试并生成代码覆盖率统计信息。 当我在 karma 配置中没有代码覆盖设置的情况下从命令行运行测试时,我可以在命令行中看到测试结果。 IE Executed 3 o
我是自动化测试的新手。我正在尝试在我的 IDE WebStorm 中运行一些测试。它似乎支持 jsTestDriver 和 Karma。据我了解,JsTestDriver 本身并不支持 Require
Karma 与 Notepad++ 完美配合。当我使用 Visual Studio 作为我的文本编辑器时,它会在我保存文件后删除它应该查看的文件。这是 Karma 显示错误的输出: This是作为解决
我将 Webpack 用于应用程序和测试(使用 https://github.com/webpack/karma-webpack)。该应用程序在 typescript 中,在 Babel 中进行测试。
我正在测试的组件在 it() 测试中对 dom 进行了一些更改,但是它在下一个 it() 测试中仍然存在,这破坏了我的测试。有没有办法在每个 it() 测试中重置 DOM? 最佳答案 对于没有 JQU
我正在尝试使用以下命令安装 Karma: C:\Program Files\nodejs>npm install karma 但是,当我尝试在 Windows 8.1 计算机上安装 Karma 时收到
我是 Karma 的新手。当我运行时: karma start myconfigfile.js Karma 正在使用 chrome 启动,但它在 karma 启动时挂起,没有更多的事情发生。但是我可以
我是第一次尝试 Karma,几个小时后我仍然无法让它工作。 当我通过键入 karma start karma.conf.js 运行测试时在终端中,浏览器窗口将打开并显示以下内容(我也尝试过使用 Chr
当我在 WebStorms 终端中输入“karma start”时,它会打开 Chrome,我可以开始测试,当我进行一些更改时,它会重新运行测试。但是,当我键入 Karma start 或单击 un
每次我开始使用 karma 进行测试时,都会打开一个新的浏览器实例(在我的例子中是 Firefox)。 这很烦人,因为它会弹出其他窗口(我使用的是 Windows 8)。 是否有任何 karma 配置
我已经正确设置了 karma 配置,配置文件,在后台运行,非常好。我更改并保存文件后,它将重新运行测试...。所有750个单元测试。我希望能够只运行几个。缺少手动修改配置文件或注释掉许多文件中数百个测
有没有办法从 karma 覆盖率运行器的代码覆盖率报告中排除文件 https://github.com/karma-runner/karma-coverage ? 最佳答案 您可以在此处使用多种技术:
我是一名优秀的程序员,十分优秀!