Jsdom: рдПрдХ рдлреЙрд░реНрдо рдкреЛрд╕реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдЬрдире░ 2011  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jsdom/jsdom

Jsdom рдФрд░ jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реЙрд░реНрдо рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдирдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ?

рд╡рд░ рд░реВрдк = '

';
$ (рдлреЙрд░реНрдо)ред рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ ('рдмреЙрдбреА');
$ ('рдлреЙрд░реНрдо')ред рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ ();

рдЙрдкрд░реЛрдХреНрдд рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдореИрдВ рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╝реЙрд░реНрдо рд╕рдмрдорд┐рд╢рди рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдПрдХ HTMLEvent рднреЗрдЬрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╕рдмрдорд┐рдЯ рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдиреНрдпреВрдирддрдо рдкреНрд░рдЬрдирди

рдореЛрдЪрд╛ + рдЪрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ:

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 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЕрднреА рдирд╣реАрдВ, рдЗрд╕ рд╕рдордп рдХреЛрдИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд╣реАрдВ рд╣реИред

рдЕрдм рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢рд╛рдпрдж рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдлреЙрд░реНрдо рдбреЗрдЯрд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо (рдлреЙрд░реНрдордбрд╛рдЯрд╛-impl.js рдореЗрдВ) рд▓рд╛рдЧреВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдиреЗрд╡рд┐рдЧреЗрд╢рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдп рдХреЛ рдХреИрд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдП? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░рд┐рд╕реЛрд░реНрд╕ рд▓реЛрдбрд░ рдиреЗ рдЖрдИрдлреНрд░реЗрдо рдореЗрдВ рд╕рдмрдорд┐рдЯ рдХрд┐рдП рдЧрдП рдлреЙрд░реНрдо рдХреЗ рдмрд╛рдж рдХреБрдЫ рднреА рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░рдирд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рдмрджрд▓рд╛рд╡?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╝реЙрд░реНрдо рд╕рдмрдорд┐рд╢рди рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдПрдХ HTMLEvent рднреЗрдЬрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╕рдмрдорд┐рдЯ рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдиреНрдпреВрдирддрдо рдкреНрд░рдЬрдирди

рдореЛрдЪрд╛ + рдЪрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ:

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 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

potapovDim picture potapovDim  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Progyan1997 picture Progyan1997  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

machineghost picture machineghost  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

khalyomede picture khalyomede  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

camelaissani picture camelaissani  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ