【问题标题】:QUnit Async Tests with setup And teardown带有设置和拆卸的 QUnit 异步测试
【发布时间】:2012-06-14 15:34:30
【问题描述】:

我需要一点帮助来理解 QUnit 内部。 我不时阅读它的源代码,但是当涉及到异步测试时,我仍在编写奇怪的测试。 我了解异步测试的概念,以及 stop() 和 start() 方法(以及为什么需要它们),但是当我将它们与 setup 和 teardown 结合起来时,我会遇到很多奇怪的情况。

这是我的测试代码:

use(['Psc.Exception','Psc.Code'], function () {
  module("async", {
    setup: function () {
      console.log('setup');
    }, teardown: function () {
      console.log('teardown');
    }
  });

  asyncTest("test1", function () {
    expect(0);

    console.log('test1');
    start();
  });

  asyncTest("test2", function () {
    expect(0);

     console.log('test2');
     start();
  });

  asyncTest("test3", function () {
    expect(0);

    console.log('test3');
    start();
  });

  asyncTest("test4", function () {
    expect(0);

    console.log('test4');
    start();
  });

  asyncTest("test5", function () {
    expect(0);

    console.log('test5');
    start();
  });
});

虽然这些都是异步测试,但我想我会在控制台中得到类似的东西:

setup
test1
teardown
setup
test2
teardown
setup
test3
teardown
...

因为我认为 qunit 会在测试主体周围调用 setup 和 teardown?

但我把一切都搞混了,从请求到请求以另一种方式打乱了。

setup
test1
teardown
setup
setup
setup
setup
test5
teardown 
test4
teardown
test3
teardown
test2
teardown

有人能一步一步解释吗?

【问题讨论】:

  • 好的,所以我不再试图理解这个问题。我刚刚得出的解决方案是,如果以这种方式从 qunit 调用 setup 函数,它将无用。因为“全局”测试变量将始终被覆盖。所以我开始将我的设置功能包含到测试本身中,效果非常好
  • Max Cantor 相信您可能在 QUnit 中发现了一个错误。你可以在 GitHub 上找到他的错误报告和修复:github.com/jquery/qunit/pull/320
  • asyncTest 函数的设置/拆卸仍有一些问题;即使有“修复”。在我的测试中,它似乎更好,但它最终会打嗝并连续多次调用 setup 。也许,如果我调试了 qunit 代码,我会更好地理解这个问题,但我只是觉得我不应该这样做。相反,正如@P.scheit 所提到的,我认为我将依赖模块化设置/拆卸。可能完全是 QUnit...

标签: asynchronous installation qunit teardown


【解决方案1】:

这是一个记录在案的问题:

http://api.qunitjs.com/QUnit.config/

在异步加载测试时,建议将 QUnit.config.autostart 设置为 false。这是我的情况,因为“使用”是异步执行的。

头部是这样的:

QUnit.config.autostart = false;
use(['Psc.Exception','Psc.Code'], function () {

  QUnit.start();
  module("async", {

所以它基本上就像做 stop() 和 start() 一样,但用于加载测试本身。我对其进行了测试,现在拆解/设置/测试以正确的顺序正确执行

【讨论】:

  • 我正在执行此操作,并且该进程在没有运行任何测试的情况下关闭:JavaScript QUnit.config.autostart = false; var tests = require("./tests.js"); tests.setup().then(() => { console.log("start..."); QUnit.start(); });
猜你喜欢
  • 1970-01-01
  • 2014-06-17
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
相关资源
最近更新 更多