Jsdom: 发布表格。

创建于 2011-01-06  ·  6评论  ·  资料来源: jsdom/jsdom

无法弄清楚如何使用 jsdom 和 jquery 发布表单。 这可能吗?

var 形式 = '

';
$(form).appendTo('body');
$('form').submit();

以上对我不起作用,应该吗,还是我做错了什么?

feature

最有用的评论

看起来表单提交已部分实现。 它调度 HTMLEvent 但不支持 submit 方法。

最小化复制

作为 Mocha + Chai 测试:

import {JSDOM} from 'jsdom'
import {assert} from 'chai'
import sinon from 'sinon'

describe('JSDOM Form', () => {

    it('submit form with button', () => {
        const dom = new JSDOM(`
  <form id="my-form">
    <button type="submit" id="submit-button">Submit Button</button>
  </form>
`, {})
        const listener = sinon.stub()
        dom.window.document.getElementById('my-form').addEventListener('submit', listener)

        dom.window.document.getElementById('submit-button').click()

        assert.isTrue(listener.called)
    })

})

什么是预期?

提交作品没有任何错误。

发生什么了?

测试成功但返回此错误:

错误:未实现:HTMLFormElement.prototype.submit

所有6条评论

还没有,此时没有默认操作。

这可能更容易实现,因为我已经实现了表单数据算法(在 FormData-impl.js 中)。 然而,表单提交后的导航当然仍然不起作用。

表单提交后,如何读取响应体? 例如,在 iframe 中提交表单后,resourceLoader 不会触发任何内容。

表单提交目前没有实现,所以是不可能的。

这有什么变化吗?

看起来表单提交已部分实现。 它调度 HTMLEvent 但不支持 submit 方法。

最小化复制

作为 Mocha + Chai 测试:

import {JSDOM} from 'jsdom'
import {assert} from 'chai'
import sinon from 'sinon'

describe('JSDOM Form', () => {

    it('submit form with button', () => {
        const dom = new JSDOM(`
  <form id="my-form">
    <button type="submit" id="submit-button">Submit Button</button>
  </form>
`, {})
        const listener = sinon.stub()
        dom.window.document.getElementById('my-form').addEventListener('submit', listener)

        dom.window.document.getElementById('submit-button').click()

        assert.isTrue(listener.called)
    })

})

什么是预期?

提交作品没有任何错误。

发生什么了?

测试成功但返回此错误:

错误:未实现:HTMLFormElement.prototype.submit

此页面是否有帮助?
0 / 5 - 0 等级