Jsdom: フォームを投稿する。

作成日 2011年01月06日  ·  6コメント  ·  ソース: jsdom/jsdom

jsdomとjqueryを使用してフォームを投稿する方法を理解するのに問題があります。 これは可能ですか?

var form = '

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

上記は私にはうまくいきません、それはすべきですか、それとも私は何か間違ったことをしていますか?

feature

最も参考になるコメント

フォームの送信は部分的に実装されているようです。 HTMLEventをディスパッチしますが、submitメソッドをサポートしていません。

最小限の繁殖

モカ+チャイテストとして:

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)を実装したので、これはおそらく実装がはるかに簡単です。 ただし、フォーム送信後のナビゲーションはもちろん機能しません。

フォームが送信された後、応答本文を読み取る方法は? たとえば、resourceLoaderは、iframeでフォームを送信した後に何もトリガーしませんでした。

フォームの送信は現在実装されていないため、できません。

これで何か変更はありますか?

フォームの送信は部分的に実装されているようです。 HTMLEventをディスパッチしますが、submitメソッドをサポートしていません。

最小限の繁殖

モカ+チャイテストとして:

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 評価