Resharper 的 qunit 测试运行程序不一致

Inconsistency in Resharper's qunit test runner

我想使用 Resharper (8.0.2) 集成的 qunit 测试运行器,但是 运行 直接在浏览器中测试与 运行 在浏览器中使用R# 亚军:

  1. 正如 here 指出的那样,未添加 fixture 元素,UI 相关测试需要它。如答案中所述,可以通过在模块设置+拆卸方法中手动添加元素来解决。

    这让我进入下一期:

  2. Resharper 只识别 deperecated setupteardown,而不是它们的替代品(beforeEachafterEach):

DEPRECATION Note: beforeEach and afterEach were previously named setup and teardown, which still exist and will be removed in 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() 回调函数不 return 一个 assert 对象,即:

test('foo', function(assert){
    var done = asssert.async(); // assert is undefined in R# qunit runner
    setTimeout(function (){
        ok(1 === 1);
        done();
    }, 500);
});

有没有办法让 R# 的行为更像“原生 qunit”测试实现?

我不确定这是否正是您希望它工作的方式,但我想要 运行 比与 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# 测试成功 运行ner。

澄清一下,路径 ../lib/qunit-1.17.1.js 是相对于 test.js 文件的文件位置。