我和Django和HTMX一起工作。我的一个视图接收一个GET请求并返回整个页面。但是,如果GET请求来自HTMX元素,视图将返回一个片段:
from django.shortcuts import render
def view_example(request):
if request.htmx:
return render(request, 'fragment.html')
else:
return render(request, 'page.html')在page.html中,一个HTMX元素触发一个GET请求,该请求需要这个片段。它起作用了--我的功能测试见HTMX请求的结果。当我在浏览器中查看它时,它也能工作。不过,它在我的单元测试中不起作用!
我试着测试两种不同类型的反应:
from django.test import TestCase
class TestRequests(TestCase):
def test_page(self):
response = self.client.get('/')
self.assertTemplateUsed(response, 'page.html')
def test_fragment(self):
headers = {'Hx-Request': 'true'}
response = self.client.get('/', **headers)
self.assertTemplateUsed(response, 'fragment.html')test_page按预期通过,但test_fragment失败:
AssertionError: False不是真: Template 'fragment.html‘不是用来呈现响应的模板。实际使用的模板: page.html
如何模拟HTMX请求,以便测试我的片段逻辑?
发布于 2022-06-02 09:46:52
Django-HTMX的头检查是区分大小写的(这是一个dict查找)。
def test_fragment(self):
headers = {'HX-Request': 'true'}
response = self.client.get('/', **headers)
self.assertTemplateUsed(response, 'fragment.html')https://stackoverflow.com/questions/72473415
复制相似问题