Jsdom: js dom für getBoundingClientRect() einrichten

Erstellt am 25. Aug. 2016  ·  4Kommentare  ·  Quelle: jsdom/jsdom

screen shot 2016-08-25 at 4 57 33 pm

Vielleicht richtet jemand jsdom ein, dass es mit getBoundingClientRect() funktioniert, ich arbeite mit simulantjs und meine Konsole protokolliert dies->
screen shot 2016-08-25 at 5 03 42 pm

    const wrapper = mount(
      <Provider store={store}>
        <FullDecoratedBlock
          uid={'test'}
          setFocusedElement={setFocusedElement}/>
      </Provider>, {attachTo: document.getElementById('app')})
    expect(wrapper.find('.add-wrap').length).to.eql(0)
    simulant.fire(document.body.querySelector('.wrapper-resize-button'), 'mousedown')
    simulant.fire(document.body, 'mousemove', {target: {clientX: 51, clientY: 101}})

hat vielleicht jemand ideen??

Hilfreichster Kommentar

Sie können davon ausgehen .getBoundingClientRect() API funktioniert und macht Folgendes:

const p = document.createElement('p')

    p.getBoundingClientRect = jest.fn(() => ({
      x: 851.671875,
      y: 200.046875,
      width: 8.34375,
      height: 17,
      top: 967.046875,
      right: 860.015625,
      bottom: 984.046875,
      left: 851.671875,
    }))

Alle 4 Kommentare

Ich kann dieses Problem nicht so gut nachvollziehen. Es scheint, als wäre es ein Dupe von #1581, https://github.com/tmpvar/jsdom/issues/653 , https://github.com/tmpvar/jsdom/issues/1322.

@domenic Ich habe eine Komponente, wenn ich die Maus an den unteren Rand der Komponente bewege, warte ich, dass meine Komponente buttop anzeigt, und es wird auf const rect = node.getBoundingClientRect() geflogen, um dieses Rechteck zu erhalten, um die Koordinaten der Maus zu erhalten, und in die Komponente schreibe const showPlusButton = event.insideX && Math.abs(event.pos.y - event.componentRect.bottom) <= MOUSE_DISTANCE Wenn ich die Maus bewege, bekomme ich immer einen zweiten Screenshot

jsdom führt kein Rendering durch, daher gibt getBoundingClientRect() immer 0,0,0,0 zurück. Daran wird sich (auch absehbar langfristig) nichts ändern. Sie können versuchen, die Funktion zu simulieren, um die erwarteten Ergebnisse zu emulieren. Siehe auch Nr. 653.

Sie können davon ausgehen .getBoundingClientRect() API funktioniert und macht Folgendes:

const p = document.createElement('p')

    p.getBoundingClientRect = jest.fn(() => ({
      x: 851.671875,
      y: 200.046875,
      width: 8.34375,
      height: 17,
      top: 967.046875,
      right: 860.015625,
      bottom: 984.046875,
      left: 851.671875,
    }))
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen