我想使用Resharper(8.0.2)集成的qunit测试运行器,但是直接在浏览器中运行测试与使用R#runner在浏览器中运行测试时存在一些差异:
正如here所指出的,未添加fixture元素,这是UI相关测试所需要的。如答案中所述,可以通过在模块设置+拆卸方法中手动添加元素来解决。
这让我想到了下一期:
Resharper只会识别deperecated setup
和teardown
,而不是他们的替代品(beforeEach
和afterEach
):
DEPRECATION注意:beforeEach和afterEach以前被命名为setup和teardown,它们仍然存在,将在QUnit 2.0.0中删除。
module("Tests for DOM manipulation", {
beforeEach: function () { // never called in the R# runner
$("body").append('<div id="qunit-fixture" />');
}
});
test('finding qunit-fixture element', function(){
var elementCount = $('#qunit-fixture').length;
ok(elementCount, 1);
});
最后,test()
回调函数不会返回assert
个对象,即:
test('foo', function(assert){
var done = asssert.async(); // assert is undefined in R# qunit runner
setTimeout(function (){
ok(1 === 1);
done();
}, 500);
});
有没有什么方法可以让R#表现得像一个&#34;原生qunit&#34;测试实施?
答案 0 :(得分:1)
我不确定这是否正是您希望它如何工作,但我想运行一个比R#捆绑的QUnit更新版本。
我最简单的解决方案是将QUnit-1.17.1包含在我的项目中,并在我的JavaScript测试文件的顶部包括:
/// <reference path="../lib/qunit-1.17.1.js" />
这将在脚本的其余部分之前包含该文件,因此它将基本上覆盖R#提供的现有QUnit定义。
碰撞可能存在问题,但我能够让它发挥作用:
/// <reference path="../lib/qunit-1.17.1.js" />
QUnit.test('this is my test', function(assert) {
assert.equal(1, 1);
});
测试成功与常规R#测试运行器。
为了澄清,路径 ../ lib / qunit-1.17.1.js 是相对于test.js文件的文件位置。