Тест для предупреждений с реагирующей нативной библиотекой тестирования - PullRequest
0 голосов
/ 01 октября 2019

Может react-native-testing-library найти предупреждение, созданное с помощью Alert.alert()?

Мое приложение создает предупреждение, как и ожидалось, но этот тест не пройден:

// test

const Wrapper = props => (
  <Fragment>
    <SubscriptionProductDetailScreen
      product={product}
      testID={"SUBSCRIPTION_DETAIL_SCREEN"}
      addToCart={addToCartSpy}
      {...props}
    />
  </Fragment>
);

function createWrapper(customProps) {
  const wrapper = render(<Wrapper {...customProps} />);
  return wrapper;
}

beforeEach(() => {
  wrapper = createWrapper();
});

// later, inside a describe block:

  it('should show an alert if no bars are selected', async () => {
    pressSubmitButton()
    expect(addToCartSpy).not.toHaveBeenCalled()

    // const alert = await waitForElement(
    //   wrapper.queryByText("Please select up to 4 free items.")
    // )

    const alert = wrapper.queryByText("Please select up to 4 free items.")
    expect(alert).not.toBeNull()
  });

// brief excerpt from the component (the onPress handler for the submit button)

  addToCart() {
    const freeItems = this.state.items[0]

    if (!freeItems || !freeItems.selections.length) {
      Alert.alert("Error", "Please select up to 4 free items.")
      return
    }

    const item: {...}
    this.props.addToCart(item)
  }

Асинхронная версия (waitForElement, прокомментировано) также завершается неудачей.

Опять же, предупреждение работает в самом приложении, и утверждение, что диспетчерское действие, вызванное обработчиком, проходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...