2017-12-28 50 views
1

내 효소 단위 테스트에서 내 구성 요소의 기본 상태를 확인하려고합니다.효소 wrapper.state가 null을 반환합니다.

import React, { Component } from 'react'; 

class Picker extends Component { 
    constructor(props) { 
     super(props); 
     this.state = { 
     sources: true 
    }; 
} 

...

export default Picker; 

마지막으로, 내 단위 테스트는 다음과 같습니다 :

it('should contain `everything` as a default value',() => { 
    const wrapper = mount(<Picker name='cnn' />); 
    expect(wrapper.state('sources')).to.exist() 
}); 

내가 여기에 직면 해요 문제는이를 위해, 나는 다음과 같은 구성 요소가 즉, 구성 요소 기본 상태를 가져올 수 없습니다. wrapper.state ('sources') 함수는 내가 틀리면 'true'를 리턴해야합니다.

누락 된 다른 단계가 있습니까? "

  • ,"^ 3.2.0 ","^ 4.1.2 "
  • "효소 ""^ 16.2.0 "와

    • "차이 "I"는 반응 "사용하고 있습니다 효소 반응 어댑터-16 ":"^ 1.1.1 "
    • "jsdom ":"^ 11.5.1 "
    • "모카 ":"^ 4.0.1 "
    • "react- addons-test-utils ":"^ 15.6.2 "
  • +0

    보십시오. 그렇다면 'chai'주장은 틀린 것입니다. 나는 그것이'expect (wrapper.state ('sources')). to.be.true;'이어야한다고 생각한다. – norbertpy

    +0

    @norbertpy 답장을 보내 주셔서 감사합니다. 나는 아래의 마이크 셔테 (Mike Shutte)가 제공 한 답변으로이 문제를 해결할 수있었습니다. – eduardo

    +0

    다행스럽게 해결했습니다. 그의 대답을 받아 들인 것으로 표시하고 그에게 upvote를 준다. 건배. – norbertpy

    답변

    1

    나는 이것에 대해 많은 고민을했습니다! PickerComponent의 서브 클래스이기 때문에 찾고있는 상태는 에 실제로 존재하며 wrapper이 아닙니다.

    shallowmount의 "래퍼"반환 값은 단지입니다 : 래퍼. 테스트하려는 실제 구성 요소가 아닙니다. 나는이 구성 요소가 둘러싸인 작은 환경이라고 생각합니다.

    const component = wrapper.instance() 
    

    그런 다음 component에, 당신은 .state, .props, & C를 호출 할 수

    가 구성 요소 상태, 소품 및 기능에 대한 주장을하려면, 내가 도달 더 나은 성공을.

    질문이 있으시면 알려주세요. `()`은`wrapper.state를 위문하고`{진정한 소스}를 출력합니다 있는지

    +0

    나는 당신이 옳다고 생각합니다. @Mike Schutte ... 귀하의 의견에 감사드립니다! – eduardo