gpt4 book ai didi

javascript - 单元错误 : assertion outside test context

转载 作者:可可西里 更新时间:2023-11-01 02:24:58 26 4
gpt4 key购买 nike

我已经搜索过了,看来这个错误是由于没有正确使用 asyncTest 造成的。但是,根据文档,我似乎做对了。我猜我在某处遗漏了一个小细节,需要一双额外的眼睛……

我正在尝试测试一些代码,这些代码发出 ajax 请求以获取页面,然后将其加载到灯箱中。 lightbox-content 在 ajax 调用完成并可以显示之前不会显示在 DOM 中。因此,我只能在我的 onComplete 回调中检查它,这是我进行测试以查看它是否正确加载的地方。

这是我的代码:

asyncTest('mytest', 1, function() {
utils.lightbox.show('/login', {
onComplete: function() {
ok($('#lighbox-content').is(':visible'), 'Lightbox loaded the /login page.');
start();
}
});
});

我得到错误:

未捕获错误:断言在测试上下文之外,位于 HTMLDivElement.window.utils

谁能看出我哪里出错了?

最佳答案

据我所知,我同意您的代码与文档相符。

更新

即使文档没有显示,我想知道您是否必须告诉 QUnit 在某个点停止以便它知道在测试函数返回后等待。我认为 QUnit 会假设这一点,因为它是一个异步测试,但值得一试。

asyncTest('mytest', 1, function() {
stop();
...
});

我一直在使用 Sinon.JS 来避免首先进行 AJAX 调用。这具有三个直接好处:

  1. 我不依赖服务器来响应请求。
  2. 我可以为每个测试指定不同的结果。
  3. 测试运行得更快。

模拟可以在 XMLHttpRequest 级别或 jQuery 方法上完成,而且非常简单。这是我的一个测试的示例:

module("geo", {
setup: function () {
this.server = sinon.fakeServer.create();
},

teardown: function () {
this.server.restore();
}
}

test("returns detected ZIP code", function () {
this.server.respondWith("/geo/detect-zip-from-ip",
[ 200, { "Content-Type": "text/html" }, '90210' ]);
geo.detectZip(function (zip) {
assertThat(zip, is('90210'));
});
this.server.respond();
});

关于javascript - 单元错误 : assertion outside test context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16949130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com