2013-02-11 1 views
1

Я хочу проверитьДразнящий декоратор в одном приложении Django

  • если вид декоратор работает правильно
  • если правильный вид называется

Итак, вот декоратор get_object и вид features являются в myapp.views.

@get_object 
def features(request, object): 
    return {} 

Я стараюсь насмешливым это:

new_view = Mock(__name__='features', return_value={}) 
decorated = get_object(new_view) 

with patch('myapp.views.features') as features: 
    features = decorated 
    client = Client() 
    response = client.get('/features') 
    print new_view.call_args 

Это ничего не показывает, как будто фиктивный объект не был назван, хотя я предполагаю, что это должно было быть.

Как я могу правильно украсить украшенный вид?

ответ

1

Если вы звоните patch, выменяете свое мнение совершенно новым MagicMock. Так как вы вручную строить макет для просмотра вы должны сделать что-то больше похожи (непроверенным):

new_view = Mock(__name__='features', return_value={}) 
features = get_object(new_view) 

with patch('myapp.views.features', features): 
    client = Client() 
    response = client.get('/features') 
    print new_view.call_args 

Это заменит myapp.views.features с вашей стороной проката издеваться.

В целом, хотя я бы рекомендовал вам протестировать ваш декоратор изолированно, не используя тестовый клиент Django. Вы действительно смешиваете два теста в одном здесь. Во-первых, убедитесь, что декоратор выполняет свою функцию, а другой проверяет правильность маршрутизации запроса.