React bileşenlerinde olay işleyicilerini test etmek, uygulamalarınızın güvenilirliğini ve işlevselliğini sağlamanın çok önemli bir yönüdür. React için popüler bir test aracı olan Enzyme, bu süreci basitleştirmek için güçlü bir araç seti sağlar. Bir Enzim tedarikçisi olarak geliştiricilerin, özellikle olay işleyicileri olmak üzere React bileşenlerini test etme konusunda karşılaştığı zorlukları anlıyoruz. Bu blog yazısında, Enzim kullanarak React bileşenlerindeki olay işleyicilerini etkili bir şekilde nasıl test edebileceğimizi keşfedeceğiz.
React'ta Olay İşleyicilerini Anlamak
Teste başlamadan önce React'te hangi olay işleyicilerin olduğunu anlamak önemlidir. Olay işleyicileri, tıklamalar, tuşlara basma veya form gönderimleri gibi belirli olaylara yanıt olarak tetiklenen işlevlerdir. React'ta bu işleyiciler tipik olarak bir bileşen sınıfı içindeki yöntemler veya fonksiyonel bileşenlerdeki ok işlevleri olarak tanımlanır.
Olay işleyicisine sahip işlevsel bir React bileşeninin basit bir örneğini burada bulabilirsiniz:
React'ı 'react'ten içe aktarın; const ButtonComponent = () => { const tanıtıcıClick = () => { console.log('Düğme tıklandı!'); }; return ( <button onClick={handleClick}>Beni tıkla</button> ); }; varsayılan ButtonComponent'i dışa aktar;
Bu örnekte,tanıtıcıTıklayınişlev, düğmeye tıklandığında çağrılan bir olay işleyicisidir.
Enzimin Test İçin Ayarlanması
Olay işleyicilerini Enzyme ile test etmeye başlamak için test ortamınızı ayarlamanız gerekir. Öncelikle projenizde Enzim ve adaptörünün kurulu olduğundan emin olun. Bunları npm veya iplik kullanarak kurabilirsiniz:
npm install --save-dev enzim enzim-adaptör-tepki-16
Daha sonra Enzyme'i test kurulum dosyanızda uygun adaptörü kullanacak şekilde yapılandırın. React 16 için aşağıdaki kodu kullanabilirsiniz:
'Enzim'den Enzimi içe aktarın; Adaptörü 'enzyme-adapter-react-16'dan içe aktarın; Enzyme.configure({ bağdaştırıcı: yeni Bağdaştırıcı() });
Olay İşleyicilerini Enzimle Test Etme
Artık test ortamınız ayarlandığına göre, olay işleyicilerini Enzyme kullanarak nasıl test edeceğinize bakalım. Enzim, React bileşenlerindeki olayları simüle etmek için aşağıdakiler gibi çeşitli yöntemler sunar:benzetmek.
Tıklama Etkinliğini Simüle Etme
Hadi test edelimDüğme Bileşenidaha önce tanımlamıştık. Bir tıklama olayını şu şekilde simüle edebilirsiniz ve olay işleyicisinin çağrıldığını doğrulayabilirsiniz:
React'ı 'react'ten içe aktarın; 'enzim'den { sığ }'ı içe aktar; './ButtonComponent' öğesinden ButtonComponent'i içe aktarın; define('ButtonComponent', () => { it('düğmeye tıklandığında tanıtıcıClick çağrılmalıdır', () => { const sarmalayıcı = sığ(<ButtonComponent />); const spy = jest.spyOn(wrapper.instance(), 'handleClick'); sarmalayıcı.instance().forceUpdate(); sarmalayıcı.find('düğme').simulate('tık'); beklenti(spy).toHaveBeenCalled(); });
Bu testte ilk olarak yüzeysel bir render oluşturuyoruz.Düğme BileşeniEnzimleri kullanaraksığYöntem. Daha sonra, bir casus oluşturuyoruz.tanıtıcıTıklayınJest'i kullanarak işlevcasuslukYöntem. Bundan sonra, casusun doğru şekilde eklendiğinden emin olmak için bileşen örneğinin güncellenmesini zorunlu kılıyoruz. Son olarak, butonu kullanarak bir tıklama olayını simüle ediyoruz.benzetmekyöntemini kullanın ve casusun çağrıldığını doğrulayın.
Olay İşleyicilerini Bağımsız Değişkenlerle Test Etme
Bazen olay işleyicileri argümanları kabul edebilir. Örneğin aşağıdaki bileşeni göz önünde bulundurun:
React'ı 'react'ten içe aktarın; const OutputComponent = () => { const tanıtıcıDeğiştir = (olay) => { console.log('Giriş değeri değiştirildi:', event.target.value); }; return ( <input type="text" onChange={handleChange} /> ); }; varsayılan Giriş Bileşenini dışa aktar;
Bu bileşeni test etmek için bir olay nesnesinibenzetmekYöntem. Bunu nasıl yapabileceğiniz aşağıda açıklanmıştır:
React'ı 'react'ten içe aktarın; 'enzim'den { sığ }'ı içe aktar; './InputComponent' öğesinden inputComponent'i içe aktarın; define('InputComponent', () => { it('giriş değiştiğinde HandleChange'i doğru değerle çağırmalı', () => { const sarmalayıcı = sığ(<InputComponent />); const spy = jest.spyOn(wrapper.instance(), 'handleChange'); sarmalayıcı.instance().forceUpdate(); const event = { target: { value: 'test' } }; sarmalayıcı.find('input').simulate('değişim', olay); wait(spy).toHaveBeenCalledWith(event);
Bu testte, bir sahte olay nesnesi yaratıyoruz.hedefyeni giriş değerini içeren özellik. Daha sonra bu olay nesnesini ikinci argüman olarak iletiyoruz.benzetmekYöntem. Son olarak, şunu doğrularız:tanıtıcıDeğiştirişlev doğru olay nesnesiyle çağrıldı.
Karmaşık Olay İşleyicilerini Test Etme
Bazı durumlarda olay işleyicileri, API çağrıları yapmak veya bileşenin durumunu güncellemek gibi karmaşık bir mantığa sahip olabilir. Bu tür olay işleyicilerini test etmek için dış bağımlılıkları taklit etmek gibi ek test teknikleri kullanmanız gerekebilir.
Örneğin, bir düğmeye tıklandığında API çağrısı yapan aşağıdaki bileşeni düşünün:
React'ı 'react'ten içe aktarın; 'axios'tan aksiyoları içe aktarın; const ApiComponent = () => { const tanıtıcıClick = async () => { try { const yanıt = wait axios.get('https://api.example.com/data'); console.log('API yanıtı:', yanıt.data); } catch (hata) { console.error('API hatası:', error); } }; return ( <button onClick={handleClick}>Verileri getir</button> ); }; varsayılan ApiComponent'i dışa aktar;
Bu bileşeni test etmek için Jest'i kullanabiliriz.sahtealay etme işlevieksenlermodülü. Bunu nasıl yapabileceğiniz aşağıda açıklanmıştır:
React'ı 'react'ten içe aktarın; 'enzim'den { sığ }'ı içe aktar; ApiComponent'i './ApiComponent' dosyasından içe aktarın; 'axios'tan aksiyoları içe aktarın; jest.mock('axios'); define('ApiComponent', () => { it('düğmeye tıklandığında axios.get çağrılmalı', async () => { const sarmalayıcı = sığ(<ApiComponent />); const spy = jest.spyOn(wrapper.instance(), 'handleClick'); sarmalayıcı.instance().forceUpdate(); const makeResponse = { data: { message: 'Success' } }; axios.get.mockResolvedValue(mockResponse); wait sarmalayıcı.find('button').simulate('click'); wait(spy).toHaveBeenCalled();toHaveBeenCalledWith('https://api.example.com/data');
Bu testte öncelikle alay ediyoruz.eksenlermodül kullanaraksahte. Daha sonra sahte bir yanıt nesnesi oluşturup onu yanıtın çözümlenmiş değeri olarak ayarlıyoruz.aksios.getkullanarak yöntemsahte Çözümlenmiş Değer. Son olarak buton üzerinde bir click olayı simüle ediyoruz ve bunun gerçekleştiğini doğruluyoruz.tanıtıcıTıklayınfonksiyon çağrıldı ve buaksios.getdoğru URL ile çağrıldı.
Çözüm
React bileşenlerinde olay işleyicilerini test etmek, uygulamalarınızın kalitesini ve güvenilirliğini sağlamanın önemli bir parçasıdır. Enzyme, bu süreci basitleştirmek için güçlü bir araç seti sağlayarak olayları simüle etmenize ve olay işleyicilerinizin beklendiği gibi çalıştığını doğrulamanıza olanak tanır.


Bir Enzim tedarikçisi olarak test ihtiyaçlarınızda size yardımcı olacak geniş bir ürün ve hizmet yelpazesi sunuyoruz. Ürünlerimizi satın almak veya test gereksinimlerinizi tartışmak istiyorsanız, lütfen bir satın alma görüşmesi için bizimle iletişime geçmekten çekinmeyin.
Ayrıca ilginizi çekebilecek çeşitli bitki özleri de sunuyoruz. Bizim göz atınYucca Rostrata/Yucca Schidigera Özü Tozu,Tatlı Badem Yağı, Veİğne Süngeri Özü Cilt Yenilemede Kullanılan% 97 Saflıkta Sünger Özü.
Referanslar
- React Belgeleri: https://reactjs.org/docs/handling-events.html
- Enzim Dokümantasyonu: https://enzymejs.github.io/enzyme/
- Jest Belgeleri: https://jestjs.io/docs/getting-started