繁体   English   中英

将QUnit与JSTestDriver一起使用

[英]Using QUnit with JSTestDriver

我想使用JsTestDriver来驱动我的QUnit测试,但是对于#qunit-fixture标记的处理方式我感到困惑。

标准的QUnit测试运行程序是HTML页面。

<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <link rel="stylesheet" href="/qunit/qunit.css" type="text/css" />
  <script type="text/javascript" src="/qunit/qunit.js"></script>
  <script type="text/javascript" src="test-script.js"></script>
</head>
<body>
 ...
 <div id="qunit-fixture">
    *** tests depend on markup that goes here ***
 </div>
</body>
</html>

JsTestDriver有一个QUnitAdapter ,可用于加载和运行test-script.js,但我看不到在#qunit-fixture获得标记的任何便利。

我想念什么吗? 适配器是否应该能够运行现有的QUnit测试? 还是将QUnit的断言框架与JsTestDriver一起使用的一种方法?

JsTestDriver与其他一些测试框架的不同之处在于,它不使用外部HTML页面作为提供HTML固定装置的输入。

相反,它使用其HtmlDoc功能提供了创建(或附加)HTML片段作为测试用例定义的一部分的功能。

http://code.google.com/p/js-test-driver/wiki/HtmlDoc

这样就可以在测试中存储HTML,例如:

TestCase("Test HtmlDoc Features", {  
    "test creating an isolated dom fragment": function() {
        /*:DOC foo = <div id="demo"><p>foo</p></div>*/
        assertEquals("Foo is a dom fragment with id 'demo'", this.foo.id, "demo");
    },
    "test appending HTML to the body": function() {
        /*:DOC += <div id="demo"><p>foo</p></div>*/
        assertEquals("HTML is appended to the body", document.getElementById("demo").innerHTML, "<p>foo</p>");
    }
});

不幸的是,它们的方法存在一些局限性。 例如,虽然可以直接将内联样式应用于HTML标记,但是将样式块或链接标记插入外部CSS文件不会将CSS样式应用于所生成的标记。 对于要在DOM元素上测试获取或设置样式属性的测试,这很难在测试用例中包含CSS。

JsTestDriver具有一个QUnit适配器 这提供了QUnit API的子集,以使用JsTestDriver运行测试。 它实际上并不使用QUnit,因此不支持异步测试以及其他缺少的功能。 根据您的测试,它可能仍然有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM