我在这里有一些单页演示: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几个月前停止工作”的那一刻。
我得到了它的工作,但只有src的页面中的脚本标签来自http:// urls。如果我必须在测试之前将软件包部署到服务器,那么测试效果并不高。
示例页面加载jquery,下划线和notjs以及需要以便作为独立演示运行。它还应该能够从本地文件系统运行,并且可以使用相对URL。我最初在页面上的notjs脚本标记指向相对路径,例如
<script src="../../notjs.basics.js"></script>
而不是
<script src="http://notjs.org/notjs.basics.js"></script>
但是后来notjs.basics.js永远不会被加载(window.Notjs ==在测试中未定义),我没有看到来自jsdom的任何错误。我已经尝试过设置documentRoot jsdom选项,但这似乎不起作用。
作为参考,loadExample方法和我的jsdom设置的其余部分在这里:https://github.com/bee-hub/notjs/blob/master/test/testHelper.coffee
感谢您的任何帮助和建议。
答案 0 :(得分:1)
我没有记录在任何地方,但jsdom版本0.8.4中的test / jsdom / index.js中的testLocal()函数为jsdom.jsdom(...)提供了一个“url”选项实现与documentRoot选项相同的目标。使用它,我能够从本地文件系统上的HTML文档中解析相关的脚本源路径。
对于它的价值,文档中也没有提到“documentRoot”。它的用途是anecdotally endorsed in a github issue,所以也许它可以在早期版本中使用。
不要忘记jsdom.jsdom(...)将异步加载脚本,因此请务必将测试与文档就绪事件联系起来。
祝你好运!