2017-02-07 1 views
1

라이브러리 gozk을 사용하여 내 응용 프로그램을 프로덕션 사육사 서버와 연결합니다. 응용 프로그램이 올바른 노드를 만들고 다양한 경우에 올바른 내용을 포함하고 있으며 DataWatch 및 NodeWatch가 올바르게 설정되어 있는지 테스트하고 싶습니다. 응용 프로그램에서 정확히 무엇을 기반으로해야하는지 정확히 수행합니다. 노드 및 데이터 업데이트.golang에서 단위 테스트를 위해 동물원 서버를 조롱하는 방법은 무엇입니까?

인위적으로 새 노드를 만들고 노드 내용을 설정할 수있는 단위 테스트 중에 만 모의 동물원 서버를 만들고 파괴 할 수 있습니까? 수동으로 사육사 서버를 만들고 사용하는 것과 다른 방법이 있습니까?

해결책은 이미 java

+0

Java에서 참조되는 솔루션은 실제로 모의 객체가 아니며 Zookeeper의 실제 인스턴스를 실행합니다. 사육사가 자바로 작성되었으므로 같은 일을하는 유일한 방법은 'os/exec' 패키지를 사용하여 사육사 인스턴스를 실행하는 것입니다. – ymonad

답변

2

을 위해 내가 사육사는 인터페이스가 호출 당신의 코드를 만드는 것이 좋습니다 존재한다.

그런

0

@ 벤 에콜의 대답은 매우 좋은 정말 서버에 연결되었다 (그러나 반환 값은 하드 코드)처럼 단지 값을 반환하는 'mockZookeeperConn'개체 당신에게 서브를 테스트하는 동안.

마찬가지로 "build constraints"을 시도 할 수 있습니다.

real-zk 및 mock-zk 코드에서 다른 빌드 태그를 구성 할 수 있습니다.

예를 들어, 우리는 실제 -zk 코드에 대해 "product"를 설정하고 mock-zk 코드에 "mock"을 설정합니다. ZK의 ENV가없는 경우

  • go test -tags mock :

    따라서이 개 unittests를 실행하는 방법이 있습니다.

  • go test -tags product 사용 가능한 zk env가있는 경우.
+0

예! 힌트를 주셔서 감사합니다. 이 기술을 사용하여 서브 인스턴스가 사용 가능할 때만 자동 zk 단위 테스트를 사용할 수있게되었습니다. –

관련 문제