Что такое хорошая практика, когда юнит-тестирование представлений, которые выполняют вызовы внешних сервисов в django - PullRequest
1 голос
/ 03 июля 2011

У нас есть это представление, которое выглядит примерно так:

from fblib import Facebook

def foo(request):
    fb = Facebook( settings.facebook )
    data = fb.get_thingy()
    return render_to_response( .. , data, .. )

Что было бы хорошим способом проверить это? Поскольку представление извлекает ресурс само по себе, я не уверен, как я могу издеваться над Facebook. На мой взгляд, одна альтернатива - создать фальшивый сервер Facebook и указать детали подключения в настройках. Итак, мы получаем юнит-тест, который выглядит примерно так:

from fakebook import FakeFacebookServer

class ViewsFooTests(TestCase):
    def set_up( self ):
        self.facebook = FakeFacebookServer().start()

    def test_foo_connect( self ):
        response = self.client.get('/foo')
        self.assertEquals( response.status_code, 200 )

Проблема, с которой я столкнулся, заключается в том, что мне кажется, что фальшивый сервер Facebook доставляет массу хлопот. В идеале я предпочел бы высмеивать метод Facebook.get_thingy. Предложения?

1 Ответ

1 голос
/ 03 июля 2011

Вы можете изменить модуль представлений из ваших тестов для насмешки над вашей библиотекой:

# tests.py
import myapp.views
...

    def setUp(self):
        myapp.views.Facebook = FaceBookMock
...