$mol의 뷰는 자기 상태의 함수이고, 그 사실이 테스트의 모습을 바꿉니다. 사용자 시나리오는 뷰 자신의 메서드 호출로 쓰입니다. 초안을 넣고, 액션을 실행하고, 사용자가 볼 것을 읽습니다.1app.draft('Milk')2app.add()3$mol_assert_equal(app.item_title(0),'Milk')셀렉터도, 브라우저도, Playwright나 Cypress도, 무언가를 기다리는 일도 없습니다. 같은 파일이 이런 것들도 함께 줍니다.속도. 테스트는 Node에서 밀리초 단위로 돌고, 천 개라도 1분쯤 걸립니다. nodemy/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({34'add an item and delete it'($){5const app=$my_todo.make({$})67app.draft('Milk')8app.add()9$mol_assert_equal(app.items().length,1)10$mol_assert_equal(app.item_title(0),'Milk')11$mol_assert_equal(app.draft(),'')1213app.delete(0)14$mol_assert_like(app.item_rows(),[])15},1617'blank draft adds nothing'($){18const app=$my_todo.make({$})1920app.draft(' ')21app.add()22$mol_assert_like(app.items(),[])23},2425})26}몇 가지 눈여겨볼 것이 있습니다.GitHub에서 이 페이지 편집도움이 되었나요?예아니요이전렌더링다음배포이 페이지에서뷰 메서드를 통한 시나리오서비스를 목으로 바꾸기시간DOM을 통해Node 테스트가 다루지 못하는 것실무 메모다음Type to search the documentation.