2011-11-16 5 views
2

Mock 조롱 라이브러리를 사용하면 조롱하고있는 수업에 대해 구체적이거나 불가지론 자이 될 수 있습니다.Python 방식으로 조롱하는 방법?

  1. mock = mox.CreateMock(Foo) 또는
  2. mock = mox.CreateMockAnything()

MOX 문서는 가능한 곳 (기본적으로 모형의 유형을 확인) 첫 번째 방법을 사용하도록 제안합니다. 동적 언어로서의 파이썬은 형식에 구애받지 않습니다. 두 가지 접근 방식이 저와 일치하지 않게 보입니다.

그래서 조롱에 접근하는 방법은 더 Pythonic입니까?

답변

2

이들은 동일하지 않습니다. documentation :

일부 클래스는 공용 인터페이스를 제공하지 않습니다. 예를 들어 은 __getattribute__을 사용하여 인터페이스를 동적으로 만들 수 있습니다. 이 클래스의 경우 MockAnything을 사용할 수 있습니다. 인터페이스를 시행하지 않으므로 마음이 원하는 모든 통화가 유효합니다. 그것은 동일한 기록 재생 검증 패러다임 에서 작동합니다. 절대적으로 해야하는 경우가 아니면 이것을 사용하지 마십시오! 당신은 너무처럼 MOX 인스턴스의 CreateMockAnything 방법과 MockAnything 만들 수 있습니다 CreateMock(Foo)를 사용하여 모의를 만들 때 대조적으로

, 당신은 알 수없는 메소드가 호출되는 예외를 얻을.

+0

답변 해 주셔서 감사합니다. – Alex

+1

@Alex : 대답에 감사하는 가장 좋은 방법은 왼쪽의 진드기를 사용하여 답변을 수락하는 것입니다. 이것은 답변자에게 평판 포인트 15 점을 부여하고 다른 독자들에게이 답변으로 귀하의 문제가 풀리거나 귀하의 질문에 대한 답을 알려줍니다. –

+0

죄송합니다. 입력을 너무 일찍 시도했습니다. 저에게이 문제는 Mox 문서와 Python 사이의 패러다임 불일치에 있습니다. Python은 메서드의 매개 변수 유형에 대해 명시 적으로 불가지론합니다. Mox 문서에 따르면 오리 타이핑은 충분하지 않으며 가능하면 정적 타이핑을 요구합니다. 의견을 보내 주시겠습니까? – Alex

관련 문제