0

我正在使用zombiejs + mocha为操作DOM的库编写一些测试,它使用像document.createElement()这样的JavaScript原生函数,我的问题是,当我运行测试时,我得到一个异常说'document is not定义'。

是zombiejs还是jsDOM有问题?我该如何解决?

这是我的代码示例:

HTML:

<!DOCTYPE html>

<html>
  <head>
    <script src="mocha.js"></script>
    <script src="expect.js"></script>
    <title>XS UI Tests</title>

    <script type="text/javascript" charset="utf-8" src="../lib/mylibrary.js"></script>

    <script>
      mocha.setup('bdd');
    </script>
  </head>

  <body>
    <div id="table"></div>
    <div id="controls"></div>
    <div id="form"></div>

    <div id="mocha"></div>

    <script src="tests.js"></script>
  </body>
</html>

在tests.js中:

var expect  = require( 'expect.js' )
  , Zombie  = require( 'zombie'    )
  , browser = new Zombie( { debug: true } )
;

describe( 'XS UI Tests:', function() {
  before( function( done ) {
    browser.visit( 'http://localhost:8080/test/ui.html', done );
  } );

  it( 'expect ui.html to be loaded', function() {
    expect( browser.success ).to.be( true );
  } );

  describe( 'Table Tests:', function() {
    it( 'expect div#table ( table container ) to exist', function() {
      expect( browser.query( "#table" ) ).to.be.ok();
    } );
  } );
} );

谢谢您的帮助

4

1 回答 1

1

document对象包含在僵尸浏览器中。如果您的代码没有找到document,很可能您没有在僵尸沙箱上下文中运行它。

您是通过加载库zombie.visit('/page/with/library')还是直接需要它并尝试在测试中使用它?

最好测试完整的网页而不是库。您应该创建一个测试页面,上面有几个按钮/链接,用于测试库的不同功能,pressButton或者visit那些带有僵尸的功能。

于 2013-04-30T18:05:32.293 回答