QUnit灯具每次都没有恢复

时间:2015-05-26 20:10:11

标签: javascript jquery qunit

我是QUnit的新手,我试图找出#qunit-fixtures如何恢复。据我了解,该元素中的所有内容都会在运行新测试之前重置。但是,我看到(对我来说是什么)奇怪的东西。在下面的示例中,灯具中的form仅包含input元素和divhas-error。据我了解,在每次测试运行之前,这些应该恢复到原始状态。 我为keypress指定了$('input')事件处理程序,只是隐藏了div

我有两个测试完全相同:在输入上触发keypress并声明隐藏错误文本。

我看到的是第一个通过的只有一个。有人可以向我解释这种行为吗?

<html>
  <head>
    <link rel="stylesheet" href="qunit-1.18.0.css">
  </head>

  <body>
    <div id="qunit"></div>
    <div id="qunit-fixture">
      <form> 
        <input name="text" />
        <div class="has-error">Error text</div>
      </form>
    </div>

    <script src="http://code.jquery.com/jquery.min.js"></script>
    <script src="qunit-1.18.0.js"></script>
    <script>
      QUnit.config.reorder = false;
      QUnit.test( "test 1", function ( assert ) {
        $('#qunit-fixture').find('input').trigger('keypress');
        assert.equal($('#qunit-fixture').find('.has-error').is(':visible'), false);
      });

      QUnit.test( "test 2", function ( assert ) {
        $('#qunit-fixture').find('input').trigger('keypress');
        assert.equal($('#qunit-fixture').find('.has-error').is(':visible'), false);
      });

      $(document).ready(function () {
        $('#qunit-fixture').find('input').keypress(function() {
          $('#qunit-fixture').find('.has-error').hide();
        });
      });

    </script>

  </body>
</html>

测试的重点是测试keypress事件。无论QUnit代码对夹具起什么作用,因为它是夹具,如果第一次测试运行$('#qunit-fixture').find('.has-error').hide();,那么在第二次测试运行之前是否应该撤消?

1 个答案:

答案 0 :(得分:2)

我认为QUnit会在运行每个测试之前删除您在夹具中添加的元素。所以&#34;按键&#34;在第二次测试开始时删除在文档就绪上添加的事件处理程序。如果您在每个测试开始时添加事件处理程序,或者在文档就绪时添加事件处理程序,它将起作用:

$("body").on("keypress","input",function( event ) {
        $('.has-error').hide();
});

QUnit可能无法在第一次测试中删除它,这解释了它第一次工作的原因。