2017-02-15 46 views
12

böyle bir bileşeni vardır. foo yöntemini test etmek istiyorum ancak nasıl erişeceğimi bilmiyorum.Enzim ile çocuk bileşeni yöntemi nasıl test edilir?</p> <pre><code><Parent> <Child/> </Parent> </code></pre> <p>ve <code><Child/></code> bileşen bir yöntem <code>foo</code> vardır:

mount(<Parent><Child/></Parent>).props().children.foo 

veya

mount(<Parent><Child/></Parent>).children().foo 

ama hem onları undefined şunlardır: denedim. Kök olmadığından .instance() kullanamıyorum.(tepkime yönlendiricinin context.router)eklemek eklemek vebaşlattıklarında onlara ihtiyacım var çünkü <Child/> bağlayamıyorum. Bununla ilgili bir fikrin var mı?

+1

Bu hala mümkün değil ya da en azından karmaşık görünüyor: https://github.com/airbnb/enzyme/issues/361 – Leonardo

+0

Yolunuzu çalışmaya başlamadan önce reaksiyon bileşenlerini ağaçta aşağıya doğru test edin. Ayrıca, bileşeninizin reaktif yönlendirici üzerindeki bağımlılığını kaldırmak için bileşeninizin paketlenmemiş bir sürümünü dışa aktarın. – therewillbecode

cevap

0

Sorununuzun alt bileşenleri nasıl test edeceğinden farklı olduğunu düşünüyorum.

İlk sorum şu: Bir alt bileşenin, ebeveynin bileşen testlerinde belirli bir yöntemi olup olmadığını kontrol ediyor musunuz?

IMHO Bu bileşen için özel bir sınava sahip olmanız ve daha sonra bu testte yöntemin mevcut olup olmadığını kontrol etmeniz gerekir.

Sadece cevapsız bırakmamak için, .find(Child).instance().foo denediniz mi?

1

Yalnızca ebeveyn sınıfınız için testler yazmayı ve ardından yalnızca çocuğunuzu test etmek için ayrı bir test dosyası düşünürüm.

const component = mount(<Child>); 

o kullanarak yöntemleri var için daha sonra erişebilir:

kullandığınız bileşen sizi monte ettikten sonra

component.instance().methodname 

Ardından jest.fn ile geçersiz kılma bunu gibi şeyler yapabilir() ve uygun şekilde test edin.

İlgili konular