- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一切正常(Karama、Jasmine、Underscore、Backbone、testr),如 _UnitTestUnitTest 通过所示。 但是简单的 testr 语句总是会失败。
基本的 _UnitTestUnitTest 有效!
it('works for jquery', function() {
expect( $("document")).toBeTruthy();
});
it('works for underscore', function() {
expect(_.size([1,2,3])).toEqual(3);
});
it('works for backbone', function() {
var model = Backbone.Model.extend();
expect(model).toBeTruthy();
});
it('works for testr', function() {
expect(testr).toBeTruthy();
});
但是,在我的另一个真实单元测试中,它在 testr 行上失败了:
AccountSummaryCollection_CLASS = testr('models/sales-rep/AccountSummaryCollection');
我确定我在配置中正确包含了“models/sales-rep/AccountSummaryCollection”的依赖项(我看到它由 require.js deps 托管并加载!!!
然而,最大的问题是它声称我们的应用程序模块没有加载,尽管它已经加载了。我还尝试将整个 AccountSummaryUnitTest.js 包装在 require(['AccountSummaryCollection'], function(){….
内,这会产生一个新错误,其中依赖项 (AccountSummary.js) 中的错误“Backbone is not Defined” 被抛出。这在上下文中没有任何意义,因为显然 AccountSummaryCollection 已经解析了 Backbone.Collection。这个糟糕的解决方案让我怀疑 testr 是可疑的。
我还尝试使用 karma 配置手动包含该文件,但 requirejs 不喜欢这样做,因为它是一个冲突的 Define() 函数。
如下: serving
实际上意味着由客户端请求
,并且 {{{dependency}}} 文件是我自己的跟踪,以确认它们是添加到 karma-spec-runner.js 中的 deps 列表中。
在这一行失败:AccountSummaryUnitCollection 第 27 行:AccountSummaryCollection_CLASS = testr('models/sales-rep/AccountSummaryCollection');
这是“spec runner”javascript(基本上是从文档复制的,带有一些额外的日志记录)。
var dependencies = [];
for (var file in window.__karma__.files) {
if (window.__karma__.files.hasOwnProperty(file)) {
//
if (/Test\.js$/.test(file)) {
//traces my test files fine!
console.log("{{{testing file}}} --> "+ file );
dependencies.push(file);
}
}
}
// jam our application files into the deps
for (var file in window.__karma__.files) {
if (window.__karma__.files.hasOwnProperty(file)) {
if (file.indexOf('src/main/app/') !== -1 ) {
//traces my dep files fine!
console.log("{{{dependency}}} file --> "+ file );
dependencies.push(file);
}
}
}
require.config({
baseUrl: 'base/src/main/app/',
paths: {
'resources' : '../resources/',
'jquery' : '../resources/js/lib/jquery-2.1.0.min',
'text' : '../resources/js/lib/text-2.0.10',
'i18n' : '../resources/js/lib/i18n-2.0.4',
'd3' : '../resources/js/lib/d3.v3.1.10.min',
'AppMeasurement' : '../resources/js/lib/appMeasurement',
'underscore' : '../resources/js/lib/underscore-1.5.2',
'Backbone' : '../resources/js/lib/backbone-1.1.2.min',
'testr' : '../../test/lib/testr'
},
deps: dependencies,
shim: {
d3: {
exports: 'd3'
},
AppMeasurement: {
exports: 'AppMeasurement'
},
underscore: {
deps:["jquery"],
exports: '_'
},
Backbone: {
deps:["jquery"],
exports: 'Backbone'
},
testr:{
exports: 'testr'
}
},
callback: window.__karma__.start,
locale: "en-us"
});
这是我的 grunt 文件的 karma 部分
karma: {
unit: {
background: false,
options: {
logLevel : 'debug',
basePath:'./',
// files for karma to host
files: [
{pattern: 'src/main/resources/js/lib/**/*.js', included: false, served: true},
{pattern: 'src/main/resources/js/plugins/**/*.js', included:false, served: true },
{pattern: 'src/test/lib/sinon.js', included: false },
{pattern: 'src/test/lib/testr.js', included: false },
{pattern: 'src/test/js/stubs/**/*.js', included: false, served: true},
// manually load our application unit test & deps to examine the simplest case
{pattern:'src/main/app/models/sales-rep/AccountSummary.js', included: false },
{pattern:'src/main/app/models/sales-rep/AccountSummaryCollection.js', included: false },
{pattern: '_UnitTestUnitTest.js', included: false},
{pattern: 'src/test/js/unit/AccountSummaryCollectionUnitTest.js', included: false},
'src/test/js/karma-spec-runner.js'
],
plugins: [
"karma-jasmine",
"karma-phantomjs-launcher",
"karma-requirejs",
'karma-chrome-launcher',
],
frameworks: [
"jasmine",
"requirejs"
],
browsers: [
//"PhantomJS"
"Chrome"
]
}
}
},
这是一个失败的示例测试
请注意,testr 配置是针对每个单元测试的。另外,此测试可以在 jasmine 浏览器中以普通方式进行!
// tried with and without the leading require statement as noted in main question.
require( ['models/sales-rep/AccountSummaryCollection'], function() {
describe('AccountSummaryCollectionUnitTest', function () {
var AccountSummaryCollection_CLASS;
function configureTestr() {
testr.config({
whitelist: [
'models/sales-rep/AccountSummaryCollection',
'models/sales-rep/AccountSummary'
]
});
}
beforeEach(function () {
configureTestr();
console.log("initializing AccountSummaryCollection_CLASS");
//fails on following line
AccountSummaryCollection_CLASS = testr('models/sales-rep/AccountSummaryCollection');
});
最佳答案
您需要特定版本的库才能使其正常工作:
然后我必须在 Karma 配置中 include:true
作为下划线和 Backbone 。然后该填充程序可与 require 2.1.11 一起使用,而不会出现不匹配的匿名定义错误。
此外,还要确保延迟测试执行。我对 waitSeconds 没有运气(这只会增加测试持续时间)。
require配置的关键部分:
// since we are forcing Backbone in the dom instead of requiring it
callback: function(){
setTimeout(function () {
window.__karma__.start();
}, 4000);
},
关于javascript - 如何将 testr 与 karma-jasmine 适配器一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23232532/
当运行测试 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 ? 最佳答案 您可以在此处使用多种技术:
我是一名优秀的程序员,十分优秀!