将QUnit与JSTestDriver一起使用

Pat*_*ney 0 javascript unit-testing qunit js-test-driver

我想使用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>
Run Code Online (Sandbox Code Playgroud)

JsTestDriver有一个可用于加载和运行test-script.js 的QUnitAdapter,但是我没有看到任何获取标记的调整#qunit-fixture.

我错过了什么吗?适配器是否应该能够运行现有的QUnit测试?或者它只是一种使用QUnit的断言框架与JsTestDriver的方法?

Ian*_*ill 5

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>");
    }
});
Run Code Online (Sandbox Code Playgroud)

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