2013-08-31 4 views
0

"우아한"시스템 종료를 구현하기 위해 시스템을 종료 할 때 매우 복잡한 회계 처리가 필요한 복잡한 멀티 서비스가 있습니다.twisted : 내 서비스의 정지 시퀀스 테스트

나는이 시험판에서 시험을 치려고한다. 문제는 원자로가 사실상 전지구 적 자원이며, 서비스를 중단한다는 것은 재판의 원자로도 중지된다는 것을 의미한다.

이것은 documented to be a no-no in trial이지만 테스트를 작성할 수있는 몇 가지 해결 방법이 필요합니다. 첫 번째 생각은 mock.Mock을 사용하는 것이 었습니다.하지만 이는 실제 가동 중단 프로세스에 충실한 행동을하지 않는 폐쇄 형 원자로를 실제로 사용하지 않는 것을 의미합니다.

필자는 시험중인 원자로를 시험중인 서비스 원자로에서 분리하는 방법이 필요하다고 생각한다. 테스트 시스템과 테스트중인 시스템간에 가변적 인 리소스를 공유하는 것은 확실한 반 패턴입니다.

답변

2

서비스 종료 및 원자로 정지 사이에는 차이가 있습니다. myservice.stopService을 사용하여 원하는 동작 대부분을 테스트 할 수 있어야합니다. 실제로 종료를 시작하는 코드를 테스트하려면 reactor.stopself.patch(reactor, 'stop', mock.Mock())으로 조롱하고 나중에 호출 된 것으로 주장하십시오. 두 사람을 연결하려면 모의 stop으로 전화하여 stopService으로 전화하십시오.