완료 전의 상태 검사
비동기 함수의 최종 결과만 기다리면 중간에 대기 상태로 전환되는 동작을 놓칠 수 있다. Tokio-test는 폴링 결과가 준비되었는지 아직 대기 중인지 확인하는 보조 기능을 제공한다. 어떤 입력과 준비 상태에서 어떤 결과가 나와야 하는지 단계별로 검사하면 비동기 제어 흐름을 좁혀 살필 수 있다.
입출력을 대역으로 구성하기
미리 정한 읽기와 쓰기 순서를 따르는 모의 입출력 객체로 네트워크 처리를 검사할 수 있다. 기대하지 않은 데이터를 쓰면 패닉으로 드러난다. 실제 네트워크의 변동성을 줄일 수 있지만 연결과 운영체제의 모든 특성까지 그대로 재현하는 것은 아니다. 대역 검사와 실제 통신 검사를 목적에 맞게 나눈다.
태스크와 런타임 경계
태스크 보조 객체는 Future나 Stream을 폴링하고 깨우기 횟수를 관찰할 수 있게 한다. Tokio 실행 문맥을 요구하는 Future라면 해당 문맥 안에서 검사해야 한다. 폴링 편의를 제공한다고 필요한 런타임까지 항상 자동으로 준비되는 것은 아니다. 완료 여부와 깨우기 동작 및 반환값을 필요한 수준으로 각각 확인한다.
관련 문서
Tokio / Rstest / Mockall / Loom 동시성 테스트