我正在使用一些前端JavaScript代码处理Django项目。我正在将JavaScript的打包和缩小从djanog管道迁移到webpack和django-webpack-装载机。
Django - webpack -装载机的工作方式是从任何Django进程中分离运行webpack来生成打包的包。django-webpack-加载程序随后将读取由webpack捆绑追踪器编写的JSON文件,并使用这些信息将正确的路径插入到HTML模板中。
这是完美无缺的,但有一个缺点:我们的一些单元测试将使用集成的Django测试客户端访问Django应用程序,该应用程序呈现完整的HTML,以便测试能够检查生成的结果。测试可以在没有任何webpack相关设置的情况下运行。因此,打包的包和JSON文件可能不存在。这些不是测试前端代码所必需的,只有动态生成的HTML才会被检查。仅仅因为有人忘了跑webpack,考试就失败了,这会导致挫折。
理想情况下,我会让django- webpack -加载器在运行测试时只在插入的<script>标记中使用虚拟URL,从而消除对webpack生成的文件的依赖。我有什么选择来解决这个依赖?
发布于 2018-02-16 03:03:50
您可以对加载程序进行完全修补,以绕过django-webpack-加载程序可能做的任何事情:
from mock import patch
...
@patch('webpack_loader.loader.WebpackLoader.get_bundle')
def test(self, mock_wpl, client):
mock_wpl.return_value = []
response = client.get("/")
assert response.status_code == 200发布于 2019-03-14 11:51:35
如果您想在更高级别上执行pytest运行的所有测试,则可以将其添加到conftest.py中。
@fixture(autouse=True)
def no_webpack_loaded(monkeypatch):
def mockreturn(loader, bundle_name):
return []
monkeypatch.setattr(WebpackLoader, "get_bundle", mockreturn)https://stackoverflow.com/questions/43660725
复制相似问题