2016-10-19 4 views
5

많은 메시지를받는 채널 테스트를하고 있습니다. 설치 중에 메시지를 수신하고 일부 상태를 조정 한 다음 해당 메시지의 다른 사본을 assert (또는 refute) 보내려고합니다. 두 번째 메시지를 트리거하는 이벤트가 발생하기 전에 사서함을 지워서이 작업을 수행 할 수 있다고 생각합니다. channelcase 사서함을 삭제하려면 어떻게해야합니까?채널 케이스 피닉스 프레임 워크 테스트에서 메일 박스를 지우는 방법

EDIT, 나는 사서함에서 메시지를 지우는 모든 이전 메시지 assert_push에 의해 나의 필요를 충족 시켰습니다. 이것은 충분히 잘 작동하지만 몇 가지 메시지 이상이 있다면 매우 불편할 것입니다.

답변

1

편집 : :lib.flush_receive()이 완벽하게 작동합니다! 불행히도 모듈이 사용되지 않아 교체를 찾을 수없는 것 같습니다.

저는이 문제에 대한 해결책을 찾고 있습니다. assert_push은 대기열에 있고 내 테스트와 관련이없는 많은 메시지가 있기 때문에 실용적이지 않습니다. 모든 메시지를 덤프하는 :c.flush()을 사용할 수 있습니다. 불행히도 나는 이것을 콘솔에 출력하지 못하게하는 방법을 아직 모르고있다.

+0

시도해 보셨습니까? https://hexdocs.pm/ex_unit/ExUnit.CaptureIO.html#content? – crododile

+0

나는 그렇지 않다. 어떻게 도움이 될까요? –

+0

"불행히도 나는 이것을 콘솔에 출력하지 못하게하는 방법을 아직 모릅니다." 편집이이 문제를 해결했는지 확신 할 수 없지만 CaptureIO가 콘솔에서 메시지가 인쇄되지 않도록 할 수 있다고 생각합니다. – crododile