QUnit 没有像我期望的那样运行手动命名空间的设置代码

QUnit isn't running manually namespaced setup code like I would expect?

本文关键字:运行 命名空间 代码 设置 期望 QUnit      更新时间:2023-09-26

In stuff.js:

function init() {
    return "works";
}
(function(ParentNamespace) {
    ParentNamespace.MySubNamespace = {};
})(window.MyNamespace || (window.MyNamespace = {}));

在我的测试 JS 文件中:

/// <reference path="../../../project1/Shared/sub1/Javascript/stuff.js" />
test("foo test", function () {
    deepEqual(init(), "works", "couldn't access source JS file");
    ok(window, "no window context");
    var ns = window.MyNamespace;
    ok(ns in window, "namespace is bad");
    var ns2 = window.MyNamespace.MySubNamespace;
    ok(ns2 in window, "subnamespace is bad");
});

使用 Chutzpah 测试适配器运行上述测试时,我'undefined' is not an object (evaluating 'window.MyNamespace.MySubNamespace')。 也就是说,在var ns2行上抛出了一个异常,我永远不会得到最后一个ok()断言。 我做错了什么? 在尝试运行测试之前.js qUnit/Chutzpah不应该运行代码吗?

我已经更改了测试。以下测试工作...

/// <reference path="../../../project1/Shared/sub1/Javascript/stuff.js" />
test("foo test", function () {
deepEqual(init(), "works", "couldn't access source JS file");
ok(window, "no window context");    
ok('MyNamespace' in window, "namespace is bad");    
ok('MySubNamespace' in window.MyNamespace, "subnamespace is bad");
});