Maison  >  Questions et réponses  >  le corps du texte

Tester Swiper avec Jest

<p>J'ai un composant qui utilise swiper/react. Lors de l'écriture du scénario de test, je ne parviens pas à simuler l'événement swiper obtenu dans onSlideChange. Je ne peux pas transmettre la condition if dans la fonction onSlideChangeHandler. Quelqu'un peut-il m'aider ? Merci! </p> <pre class="brush:php;toolbar:false;">importer { Swiper, SwiperSlide } depuis 'swiper/react'; fonction d'exportation par défaut Abcxyz(props: PropsType) { ... ... const onSlideChangeHandler = (glisseur) => const activeSlideIndex = swiper.activeIndex; const slides = swiper.slides; if (slides[activeSlideIndex]?.id === 'package d'imprimante hybride') { visibleConfigOptionsStore.setVisibleConfigOptions( diapositives[activeSlideIndex].id ); } } ; retour ( <Swiper onSlideChange={(swiper) => onSlideChangeHandler(swiper)} > ) }</pré> <p>J'ai essayé plusieurs choses mais rien ne fonctionne jusqu'à présent. </p>
P粉805931281P粉805931281385 Il y a quelques jours572

répondre à tous(1)je répondrai

  • P粉384679266

    P粉3846792662023-09-01 20:43:25

    Puisque vous ne souhaitez pas tester Swiper lui-même et souhaitez simplement vérifier que votre gestionnaire s'exécute lorsque onSlideChange est déclenché, vous pouvez suivre ces étapes :

    1. Mock Swiper pour que vous puissiez utiliser testId et cliquer sur l'événement pour déclencher onSlideChange
    jest.mock('swiper/react', () => ({
      Swiper: ({ children, onSlideChange }: { children: React.ReactNode; onSlideChange: () => void }) => (
        <div data-testid="swiper" onClick={onSlideChange}>
          {children}
        </div>
      ),
    }));
    1. Déclenchez maintenant des événements et faites des assertions dans vos tests :
    fireEvent.click(screen.getByTestId('swiper'));

    répondre
    0
  • Annulerrépondre