2017-05-26 21 views
9

shouldComponentUpdate yöntemini uygulayan bir React Component'im var ve bunu test etmek istiyorum. İdeal olarak, bir ünite testindeki bileşen üzerindeki bazı pervane veya durumu değiştirebilir ve yeniden işlendiğini veya doğrulayamadığını doğrulayabilirim. Bu yardımcı olursa enzyme kullanıyorum.Birim testi nasıl yapılır React Component shouldComponentUpdate yöntemi

+0

Konuştuğunuz şeyin bir birim testi olduğunu sanmıyorum, değil mi? İdeal olarak, "shouldComponentUpdate" ini izole olarak test edebilmelisiniz. – speckledcarp

cevap

14

Muhtemelen doğrudanComponentUpdate'i çağırmalıyım.

şey bileşeni gerçekten oluşturulup eğer/oluşturmaması belirleyerek test etmek çalışılıyor

const comp = shallow(<Comp {...props} />) 
const shouldUpdate = comp.instance().shouldComponentUpdate(nextProps, nextState) 
expect(shouldUpdate).toBe(true/false) 

gibi bu değer daha muhtemelen daha sorun; Bunu enzimi kullanarak nasıl yapacağını bile bilmiyorum. İşlenmiş çıktıyı, önceki çıktıyla aynı olmadıkça, muhtemelen shouldComponentUpdate'den false döndürmeyeceğinizden, çıkarılan çıktıdan gerçekten çıkamazsınız. Dolayısıyla, bir çıktının meydana gelip gelmediğini belirleme, yalnızca çıktıdan gelemedi.

Doğrudan arayarak test etmek bana göre iyi görünüyor. React uygulamanızın geri dönüş değeri doğru bir şekilde kullanıldığında (eğer daha büyük problemler varsa), güvenlidir.

-3

Bence birim testleri için hiçbir şey yapmamalısınız ve bu yüzden ünite testleri için enzime ihtiyacınız yok.

Vakanız için hızlı bir ünite test örneği.

const classContext = { 
    props: {}, 
    state: {} 
}; 
const nextProps = {}; 
const nextState = {}; 

const shouldUpdate = yourComponent.prototype.shouldComponentUpdate.call(classContext, nextProps, nextState); 

expect(shouldUpdate).toBe(true/false)