0
이 함수를 가지고 있습니다 :템플릿 경로를 제공하지 않고 get_template을 사용하는이 함수를 테스트하는 방법은 무엇입니까?
def _render(object, template, context_name=None, classes=None):
"""
Helper function that execute the form/field actual rendering.
"""
if not context_name:
context_name = 'object'
template = get_template(template)
c = {
context_name: object,
'classes': classes,
}
return template.render(Context(c))
테스트하고 싶지만 파일 시스템에 기존의 템플릿을 제공하는 것을 원하지 않습니다. input_chunk
:
class RenderCustomChunk(TestCase):
"""
The ``_render()`` class should return a fully rendered html code
based on the given template chunk and parameters passed
with the rendering function ie. classes.
"""
def setUp(self):
self.test_object = 'Test Object'
self.test_template_name = 'TestTemplate.html'
self.input_chunk = u'<p>{{ object }}</p>'
self.render_output = u'<p>%s</p>' % self.test_object
def test_should_render_custom_object(self):
self.assertEqual(forms._render(self.test_object, self.test_template_name),
self.render_output)
그렇게 할 수있는 우아한 방법이 있습니까?
, 그래서이 해결책을위한 "no go". 나는이 도우미에서 get_template을 제거하는 것을 포함하여 많은 해결책을 생각했다. 하지만 나는 우아한, 아마도 모의 관련 하나를 찾고 있는데 - 그 이유는 질문을 올렸습니다 - 나는 쉬운 것을 여기에서 찾고 있지 않습니다;) – bx2
Roger that. 따라서 템플릿 경로로 함수를 테스트하려고합니다. get_template 기능을 테스트하거나 _render 만 테스트하려고한다는 뜻입니까? get_template은 file = open (path)을 코어에서 사용하기 때문에 "가상"파일을 사용하는 것은 불가능하다고 생각합니다. 실제 open() 대신 가상 파일 내용을 반환하려면 함수에서 일부 지점을 조롱해야합니다. _render 함수를 수정하지 않고 깨끗한 솔루션은 테스트에서 get_template 함수를 조롱하는 것일 수 있습니다. 어떻게 생각해? 예제와 함께 업데이트 : –
당신은 이것의 바닥에 도착 했니? get_template 함수 자체를 테스트하지 않은 경우 (템플릿 로더를 통해 파일을 성공적으로 검색했는지 여부) get_template 함수를 조롱하면 문제가 해결됩니다. –