>

죄송하지만 패키지 설명은 초보자에게는 약간 불투명합니다. "어설 션 속성을 종료하기위한 기능 양식." 이 문맥에서 어설 션 속성은 무엇이며 종료는 무엇을 의미합니까? 왜 그렇게 많은 질문을 "종료"하지 않습니까? dirtychai가없는 예와 그 예가 유익하다는 것을 보여줍니다.

패키지 : https://www.npmjs.com/package/dirty-chai


  • 답변 # 1

    dirty-chai 의 주요 이유 중 하나는  속성 액세스에 대한 주장을 제기하는 것이 좋은 습관 (적어도 JavaScript 커뮤니티의 일부에게는)으로 간주되지 않습니다.

    chai  다음과 같은 테스트를 작성할 수 있습니다 :

    chai.expect(someFunctionThatReturnsTrue(args)).to.be.true
    
    
    테스트가 실패하면 someFunctionThatReturnsTrue(args)   true 이외의 다른 것을 반환했을 것  그 코드로 들어가서 이유를 알 수 있습니다. 그러나이 테스트를 수행하려면 true 에 액세스하십시오.  어설 션이 실패하면 (예 : 예외 발생) 속성에서 어설 션을 만들고 코드 실행을 중단해야합니다.

    린 터는 일반적으로 부동산 가입이 어떻게 이루어지는 지 알지 못하며,이 가입으로 인해 환경이 바뀌지 않을 것이라고 생각하고 싶습니다.

    따라서 something.true 를 쓰면  (괄호없이) linter는 단순히 something 의 속성에 액세스하려고한다고 가정합니다.  이름이 true . 표현식이 어디에도없는 경우 (함수, 함수 매개 변수 또는 다른 평가에서 사용되지 않음), 코드에서 오타 나 무언가가 있다고 생각하면 오류가 발생하여 이에 대해 불평하는 오류가 발생합니다. 따라서 chai 의 이전 유효 사례  린터 오류가 발생합니다.

    존재하지 않는 속성에 액세스하려고하면 JS가 불평하지 않기 때문에 JavaScript에서

    이러한 종류의 오류는 유용 할 수 있습니다. 예를 들어 테스트 코드에 오타가 있으면 어떻게해야합니까?

    chai.expect(someFunctionThatReturnsTrue(args)).to.be.ture
                                                      // ~~~~ not `true`, obviously a typo
    
    

    이 테스트는 어떤 someFunctionThatReturnsTrue(args) 에 관계없이 통과합니다  반품합니다.( .ture 에 액세스했기 때문에  단순히 undefined 를 반환  오류가 발생하지 않습니다.) someFunctionThatReturnsTrue() 에서 일부 코딩 오류가 누락 될 수 있습니다. . 더 나쁜 것은, 오류가 있으면 someFunctionThatReturnsTrue() 에없는 것으로 가정 할 수 있습니다  테스트를 통과했기 때문입니다.

    .true 와 같이 속성 접근에서 어설 션을 변환함으로써 ) 메소드의 어설 션으로 ( .true() ) dirty-chai 에서 , 린 터는 이러한 진술이 제어 흐름을 바꿀 수 있음을 알고 있습니다 :

    chai.expect(someFunctionThatReturnsTrue(args)).to.be.true()
    // Linter now knows you are expecting something to happen during `.true()` call
    // and won't complain anymore
    
    

    오타를 만들면 예외가 발생하여 테스트가 실패합니다

    chai.expect(someFunctionThatReturnsTrue(args)).to.be.ture()
                                                      // ~~~~ Will throw something like
                                                      // `...to.be.ture is not a function`
    
    

  • 이전 machine learning - 패턴과 일치하도록 안드로이드 센서 (가속도계) 데이터 세트를 저장하고 비교
  • 다음 c++ - 게시 할 내용이 없습니다 octree가 비어 있습니다