2011-02-25 3 views
0

django에서보기 기능에 대한 몇 가지 테스트를 작성하고 있습니다. 뷰 함수는 pyFacebook 라이브러리의 @facebook.require_login 데코레이터로 장식되어 있습니다. 이 deciorator는 사용자가 페이스 북에 로그인되어 있는지 확인하고 facebook api를 나타내는 객체에 대한 액세스를 제공합니다. 요청의 확인 및 채우기는 일부 미들웨어에서 수행됩니다.장고보기를 테스트 할 때 요청 개체의 속성 설정

뷰 기능이 페이스 북 API에서 보는 것을 제어 할 수 있기를 원하므로 모의 라이브러리를 사용하여 페이스 북 API 객체를 조롱하려고합니다. 문제는 facebook 미들웨어가 facebook API를 요청에 대한 속성으로 사용할 수있게 해줍니다. 장고 테스트 클라이언트가 요청 객체에 대한 액세스 권한을 제공하지 않는다는 것을 알 수 있습니다. 따라서 모의 facebook API 객체를보기에 삽입 할 수 없습니다. .

내가 테스트 할 수있는 유일한 방법은 기본적으로 테스트 클라이언트에서 대부분의 코드를 복사하고 테스트 개체가 테스트를 실행하기 전에 테스트 코드에 액세스 할 수 있도록 수정하는 것입니다. 이 작업을 수행하는 데 문제가 없지만이를 수행하는 가장 좋은 방법입니까? 나는 쉬운 방법이 있어야하는 것처럼 느낀다.

또한 미들웨어가 요청에 대한 속성을 설정하는 것이 정상적인가요? 미들웨어가 데코 레이팅 된 함수에 대한 추가 인수로 사용할 수있는 여분의 데이터를 개념적으로 더 깨끗하게 만드는 것처럼 보입니다 (이 예제에서는 확실합니다. 그것이 적용되지 않는 곳이 있습니다).

답변

0
+0

내가 가진, 그것은 거의 정확하게 내 문제를 해결하는 동안 그것은 또한 장고의 개발 버전에서만 사용할 수 있습니다. 저는 현재 1.2에서 일하고 있습니다. 아마도 질문에 그 질문을 명시해야합니다. 어쨌든, 현재의 솔루션은 기본적으로 RequestFactory의 코드를 개발 버전에서 테스트 라이브러리로 복사하는 것입니다. 거대한 해킹이지만 작동합니다. –

+0

지금 당장은 약간의 해킹이있을 수 있지만 적어도 테스트 코드는 1.3으로 업그레이드 된 후 쉽게 업그레이드 할 수있을 것입니다. – DrMeers

관련 문제