smalljs$mol검색⌘ K문서플레이그라운드비교에코시스템소개KO
테스트Getting Started소개멘탈 모델시작하기TypeScript에서 view.tree로프로젝트 구조도구Essentials설치상태와 반응성라우팅렌더링테스트배포문제 해결Data데이터 가져오기데이터 스키마Giper BazaMore쇼케이스React, Vue, Svelte에서쿡북Advanced플러그인모듈 메타데이터오프라인고스트 뷰About자주 묻는 질문릴리스API$mol_button_major$mol_button_minor$mol_string$mol_number$mol_text$mol_paragraph$mol_list$mol_row$mol_link$mol_check$mol_switch$mol_select$mol_scroll$mol_page$mol_pick

테스트

$mol의 뷰는 자기 상태의 함수이고, 그 사실이 테스트의 모습을 바꿉니다. 사용자 시나리오는 뷰 자신의 메서드 호출로 쓰입니다. 초안을 넣고, 액션을 실행하고, 사용자가 볼 것을 읽습니다.1app.draft( 'Milk' )2app.add()3$mol_assert_equal( app.item_title( 0 ), 'Milk' )셀렉터도, 브라우저도, Playwright나 Cypress도, 무언가를 기다리는 일도 없습니다. 같은 파일이 이런 것들도 함께 줍니다.속도. 테스트는 Node에서 밀리초 단위로 돌고, 천 개라도 1분쯤 걸립니다. node my/hello/-/node.test.js가 한 모듈의 테스트를 실행합니다.설정 없음. 컴포넌트 옆의 hello.test.ts는 빌더가 집어 -/node.test.js로 컴파일합니다. mam_build를 쓰는 지속적 통합이 그것을 실행하고, 테스트가 실패하면 빌드도 실패시킵니다.컨텍스트를 통한 서비스 교체. 모든 테스트는 자기만의 $를 받고, 컴포넌트가 this.$.X로 닿는 모든 것은 그 $에 테스트 대역을 대입하면 바뀝니다. $mol_fetch가 아니라 this.$.$mol_fetch라고 쓰는 이유가 이것입니다. 이쪽은 교체할 수 있고, 전역 쪽은 그럴 수 없습니다.목으로 만든 시간. 컨텍스트를 통해 만든 타이머는 스스로 흐르지 않습니다. 큐에 든 것은 $mol_after_mock_warp()가 실행합니다.필요할 때는 진짜 DOM. Node 번들은 jsdom을 싣고 있어, 같은 테스트 파일에서 dom_node()querySelectorAll이 동작합니다.

뷰 메서드를 통한 시나리오

쿡북의 todo 리스트를 가져옵시다. draft? 문자열, items 리스트, add 액션, delete 액션. 그 테스트는 my/todo/todo.test.ts에 있습니다.1namespace $ {2 $mol_test({3 4 'add an item and delete it'( $ ) {5 const app = $my_todo.make({ $ })6 7 app.draft( 'Milk' )8 app.add()9 $mol_assert_equal( app.items().length, 1 )10 $mol_assert_equal( app.item_title( 0 ), 'Milk' )11 $mol_assert_equal( app.draft(), '' )12 13 app.delete( 0 )14 $mol_assert_like( app.item_rows(), [] )15 },16 17 'blank draft adds nothing'( $ ) {18 const app = $my_todo.make({ $ })19 20 app.draft( ' ' )21 app.add()22 $mol_assert_like( app.items(), [] )23 },24 25 })26}몇 가지 눈여겨볼 것이 있습니다.
GitHub에서 이 페이지 편집도움이 되었나요?아니요이전렌더링다음배포
이 페이지에서뷰 메서드를 통한 시나리오서비스를 목으로 바꾸기시간DOM을 통해Node 테스트가 다루지 못하는 것실무 메모다음
Type to search the documentation.