1

我在这里有一些像这样的单页演示:http: //notjs.org/examples/forms/formmode_demo.html

我想,哇,如果可以在我现有的 mocha chai badness 设置中编写一些测试来直接测试示例,那就太棒了:

        example = 'forms/formmode_demo.html'

        describe "examples/#{example}", () ->
          before (done) ->
            loadExample example, () => done()

          it 'should load in full input mode', () ->
            window.$('input').length.should.equal 2

          describe "in full input mode", () ->
            it 'should have visible save', () ->
              window.$('button.success').is(':visible').should.be.true
            it 'should have visible cancel', () ->
              window.$('button.cancel').is(':visible').should.be.true
            it 'should not have put inputs on readonly class elements', ()->
              window.$('.readonly input').length.should.equal 0
            it 'should have input with author name', () ->
              window.$("[data-not_attr='name'] input:text").val().should.equal window.dataObject.name

如果我能做到这一点,那么我将永远不会遭受那种“你的示例 x 几个月前停止工作”的尴尬时刻。

我让它工作,但只能使用来自 http:// urls 的页面中的脚本标签。如果我必须在测试之前将包部署到服务器,那么测试的效果就不那么好了。

示例页面加载 jquery、underscore 和 notjs 并且需要以作为独立演示运行。它还应该能够从本地文件系统运行,并且可以使用相对 url。我最初让页面上的 notjs 脚本标签指向一个相对路径,例如

    <script src="../../notjs.basics.js"></script>

代替

    <script src="http://notjs.org/notjs.basics.js"></script>

但是然后 notjs.basics.js 永远不会加载(window.Notjs == undefined 在测试中)并且我没有看到来自 jsdom 的任何错误。我尝试设置 documentRoot jsdom 选项,但这似乎不起作用。

作为参考,loadExample 方法和我的 jsdom 设置的其余部分在这里: https ://github.com/bee-hub/notjs/blob/master/test/testHelper.coffee

感谢您的任何帮助和建议。

4

1 回答 1

1

它没有记录在我能看到的任何地方,但是 jsdom 0.8.4 版本中 test/jsdom/index.js 中的 testLocal() 函数为 jsdom.jsdom(...) 提供了一个“url”选项,这似乎完成了很多与您对 documentRoot 选项所期望的目标相同。使用它,我能够从本地文件系统上的 HTML 文档中解析相对脚本源路径。

对于它的价值,文档中也没有提到“documentRoot”。它的使用在 github issue 中得到了传闻,所以它可能在早期版本中工作。

不要忘记 jsdom.jsdom(...) 将异步加载脚本,因此请确保将您的测试连接到文档就绪事件。

祝你好运!

于 2013-09-12T16:29:37.063 回答