Skip to content
This repository was archived by the owner on Jul 30, 2020. It is now read-only.

View's 'measure' method callback not invoked #125

Closed
abmantis opened this issue May 31, 2020 · 1 comment
Closed

View's 'measure' method callback not invoked #125

abmantis opened this issue May 31, 2020 · 1 comment

Comments

@abmantis
Copy link

abmantis commented May 31, 2020

  • react-native or expo: expo 37.0.3
  • native-testing-library version: 5.0.3
  • jest-preset: @testing-library/react-native/jest-preset
  • react-native version: 37.0.1
  • node version: 14.2.0

Relevant code or config:

  function onPress() {
    cardView.current.measure((x, y, width, height, pageX, pageY) => {
      console.log('Measure called', pageX, pageY, width, height);
    });
  }

What you did:

Calling fireEvent.press on a button my component, that calls the onPress() callback I posted above.
When running normally on the browser, pressing the button logs "Measure called ....".

What happened:

The measure callback is not invoked, even though the measure method is being called.

Problem description:

My project relies on measure to trigger some user-facing behavior.

Suggested solution:

Too new to React Native and JS in general :/

Can you help us fix this issue by submitting a pull request?

Sure, with some guidance.

EDIT:

I ended up mocking the method myself with the following code, but I was hoping this was not necessary with the native-testing-library preset.

jest.spyOn(View.prototype, 'measureInWindow').mockImplementation((cb) => cb(0, 0, 1, 1));

@bgneu
Copy link

bgneu commented Jun 19, 2020

@abmantis I faced the same problem on RN 0.61 and the main problem was that measure is implemented as a simple jest.fn() (see mock-native-method).

What I did was, similar to what you did, but mocking implementation on the preset...

import { mockNativeMethods } from "@testing-library/react-native/dist/preset/mock-native-methods"
...
mockNativeMethods.measure.mockImplementation( (cb) => { 
    ... 
    cb(0, 0, 100, 100, 10, 10) // Random values
})

So in terms of guidance, I hope this helps a bit. :)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants