2017-11-15 32 views
0

Semantic React UI library을 사용 중입니다.효소 얕은 및 구성 요소 기반 UI로 테스트하는 방법은 무엇입니까?

<div className="EditTemplateMetaDataPage"> 
     <Page title={...}> 
      <Container text> 
      <Segment> 
       <Grid columns={1}> 
       <Grid.Column> 
        <Button ...> 

이 많은 사람들에게 흥미로운 일이 될 수도 있습니다 비슷한 재질 UI 또는 부트 스트랩 반작용과 같은 구성 요소 라이브러리 반응 사용 : 같은 코드는 종종 보인다.

우리는 한 단계 깊은 렌더링 때문에 우리가 정말 깊은 Button 매장 필요가있는 동안 우리는 현재, 단지 시각적 도우미 테스트에서, 제 1 <Grid> 구성 요소, 대신 shallowenzyme 라이브러리 mount를 사용 대신.

성능 때문에 피하기 위해 중복 테스트shallow을 사용하는 것이 좋습니다.

: (우리는 London school TDD를 수행하고 그 하위 구성 요소가 존재만을 확인하고 자신의 인터페이스를 적절하게 사용하는)

우리는 즉, 시각적 구성 요소에 대한 전용 CSS를 사용하여

<div className='ui one column grid'> 

대신 등장

<Grid columns={1}> 

그러나 이것이 최적의 방법인지는 확실하지 않습니다. 다른 아이디어가 있습니까? 이 경우 shallow(...)을 어떻게 사용할 수 있습니까?

+0

것이다 별도로 구성 요소를 나누는 래퍼를 의미-UI-반응에 그들을 테스트를 그들 자신, 도움? 예를 들어, Semantic-UI 그리드 내부에 살고있는 카드 모양의 구조가있는 경우 별도의 Card 구성 요소로 분리하여 테스트하십시오. –

+0

@DimitrisKaragiannis와 비슷한 해결책을 생각해 보았습니다! 이것은 React 구성 요소로 작업 할 때 일반적으로 가장 좋은 방법입니다. 문제는'WrapperComponent' **에 **이 'CardComponent'의 목록이 들어 있다는 것을 단언하기를 원한다고 상상해보십시오. 다른 래퍼는'CardComponentList'라고합니다. 그리드에있는 한 불가능합니다. 'Grid','Segment' 등이 기본 레이아웃 구조화에 사용되는 한, 이러한 것들은 매우 희소식이됩니다. 나는 네이티브 DOM 요소를 사용한다고 생각합니다. 이것은 또한 기능적 설계와 순수 설계 사이의 관심사를 명확하게 구분합니다. – headphones

답변

0

은 실제로 당신이 선택과 같은 구성 요소를 사용하는 얕은 수 있도록, 그래서 당신처럼 뭔가를 할 수

import Button from '../Button' 

const page = shallow(<Page />) 

expect(page.find(Button).length).toBe(1) 

http://airbnb.io/enzyme/docs/api/selector.html

+0

'shallow'는 한 레벨 만 렌더링하기 때문에'Button'은'shallow'를 사용할 때 발견되지 않습니다. (실제로는 얕은 목적입니다.)이 레벨에는 ''만 있지만 '버튼'은 없습니다. 왜냐하면'Grid '는 컴포넌트 자체이기 때문입니다. (내 중첩 된 예제를 참조하십시오) – headphones

+0

여기에 설명되어 있습니다 : https://github.com/airbnb/enzyme/issues/388 – headphones

+0

@headphones'page.find (Grid) .dive(). find (Button)' –