【问题标题】:Inconsistency in Resharper's qunit test runnerResharper 的 qunit 测试运行程序不一致
【发布时间】:2015-01-15 16:51:28
【问题描述】:

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

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

    这就引出了下一个问题:

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

弃用注意: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# 表现得更像“本机 qunit”测试实现?

【问题讨论】:

    标签: resharper qunit


    【解决方案1】:

    我不确定这是否正是您希望它工作的方式,但我想运行比 R# 捆绑的 QUnit 更新版本的 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 文件的文件位置。

    【讨论】:

    • 感谢您的意见。这可能有效,但它不是您所说的最佳选择。我实际上询问了 R# 团队,他们都告诉我,获得更新的 QUnit 运行器的唯一方法是等到与未来的 R# 版本捆绑在一起,这让 IMO 非常失望。
    • 我知道你的意思,如果你能告诉 R# 如何配置测试上下文会很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 2016-03-23
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    相关资源
    最近更新 更多