2017-05-24 57 views
6

Yönlendiriciye v4 tepki vermek üzere değiştirildi ve birkaç testin yeniden uyarlanması gerekiyor. Aşağıdaki senaryo vardır: yöntem iki kez adı edilmiş olup olmadığının tetkik SetProps React Router 4 ve enzim

  • :

    • enzimleri ile sahne değiştirme (Yöntemia adı edilmiş olup olmadığının tetkik) bir bileşen
    • montaj yöntemi sarıcı

      ve o eski router ile oldukça kolay oldu .. ama yenisi ile çok sert gelir:

      bileşen (veya çocuk), örneğin 012 için içeriyorsa, bu, bileşenin oluşturulması için uygun bir metin belirtmemiz gerektiği anlamına gelir. Bu yüzden bu MemoryRouter oluşturuldu: Biz enzim kütüphanesinden (http://airbnb.io/enzyme/docs/api/ReactWrapper/setProps.html) en setProps yöntemine bakmak eğer Ama ..: Biz bileşeni (https://reacttraining.com/react-router/web/guides/testing daha fazla bilgi): işlemek mümkün olduğu kadar

      const comp = mount(
           <MemoryRouter> 
           <Comp {...someProps} /> 
           </MemoryRouter> 
          ); 
      //here comes assertion about spy getting called 
      

      sayesinde

      kök bileşeninin sahne ayarlar ve bir yöntem olup yeniden oluşturur.

      Ben comp.setProps çağırırsanız ({.. newProps}), aslında (MemoryRouter) rota sahne değiştirir, ama tilki gibi berbat benim bileşen sahne, doesnt değiştirmek anlamına gelir.

      Böyle bir durumla ilgili herhangi bir bilgi var mı?

  • cevap

    5

    Sen MemoryRouter etrafında sarıcı yazmak ve test edilecek diğer ihtiyacı düğüme aşağı bütün sahne geçebileceği.

    const CompWrappedWithMemoryRouter = (props) => { 
        return (
         <MemoryRouter> 
          <Comp {...props /> 
         </MemoryRouter> 
        ) 
    } 
    

    sonra

    const comp = mount(
         <CompWrappedWithMemoryRouter {...someProps} /> 
        ); 
    

    şimdi comp.setProps

    çalışması gerektiğini elbette kullanmak