Jsdom: Publicando un formulario.

Creado en 6 ene. 2011  ·  6Comentarios  ·  Fuente: jsdom/jsdom

Tener problemas para descubrir cómo publicar un formulario usando jsdom y jquery. ¿es posible?

var form = '

';
$ (formulario) .appendTo ('cuerpo');
$ ('formulario'). submit ();

Lo anterior no funciona para mí, ¿debería o estoy haciendo algo mal?

feature

Comentario más útil

Parece que el envío de formularios está parcialmente implementado. Envía un HTMLEvent pero no admite el método de envío.

Reproducción mínima

Como prueba de 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)
    })

})

¿Lo que es esperado?

Enviar trabajos sin errores.

¿Lo que sucede?

La prueba tiene éxito pero devuelve este error:

Error: No implementado: HTMLFormElement.prototype.submit

Todos 6 comentarios

todavía no, no hay acciones predeterminadas en este momento.

Esto probablemente sea mucho más fácil de implementar ahora que implementé el algoritmo de datos de formulario (en FormData-impl.js). Sin embargo, la navegación después del envío del formulario, por supuesto, aún no funcionaría.

Después de enviar el formulario, ¿cómo leer el cuerpo de la respuesta? Por ejemplo, resourceLoader no activó nada después de un formulario enviado en un iframe.

El envío de formularios no está implementado actualmente, por lo que no es posible.

¿Algún cambio con esto?

Parece que el envío de formularios está parcialmente implementado. Envía un HTMLEvent pero no admite el método de envío.

Reproducción mínima

Como prueba de 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)
    })

})

¿Lo que es esperado?

Enviar trabajos sin errores.

¿Lo que sucede?

La prueba tiene éxito pero devuelve este error:

Error: No implementado: HTMLFormElement.prototype.submit

¿Fue útil esta página
0 / 5 - 0 calificaciones