Jsdom: Postando um formulário.

Criado em 6 jan. 2011  ·  6Comentários  ·  Fonte: jsdom/jsdom

Tendo problemas para descobrir como postar um formulário usando jsdom e jquery. Isso é possível?

var form = '

';
$ (formulário) .appendTo ('corpo');
$ ('formulário'). submit ();

O que foi dito acima não funciona para mim, deveria ou estou fazendo algo errado?

feature

Comentários muito úteis

Parece que o envio do formulário está parcialmente implementado. Ele despacha um HTMLEvent, mas não oferece suporte ao método de envio.

Reprodução mínima

Como um teste 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)
    })

})

O que é esperado?

Envie trabalhos sem erros.

O que acontece?

O teste é bem-sucedido, mas retorna este erro:

Erro: Não implementado: HTMLFormElement.prototype.submit

Todos 6 comentários

ainda não, não há ações padrão no momento.

Provavelmente, isso é muito mais fácil de implementar agora que implementei o algoritmo de dados de formulário (em FormData-impl.js). No entanto, a navegação após o envio do formulário ainda não funcionaria.

Após o envio do formulário, como ler o corpo da resposta? Por exemplo, resourceLoader não acionou nada após um formulário enviado em um iframe.

O envio de formulários não está implementado no momento, portanto, não é possível.

Alguma mudança com isso?

Parece que o envio do formulário está parcialmente implementado. Ele despacha um HTMLEvent, mas não oferece suporte ao método de envio.

Reprodução mínima

Como um teste 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)
    })

})

O que é esperado?

Envie trabalhos sem erros.

O que acontece?

O teste é bem-sucedido, mas retorna este erro:

Erro: Não implementado: HTMLFormElement.prototype.submit

Esta página foi útil?
0 / 5 - 0 avaliações