我正在使用一些前端 JavaScript 代码处理 Django 项目。我正在使用django-webpack-loader将 JavaScript 打包和缩小从djanog-pipeline迁移到webpack。
django-webpack-loader通过运行独立于任何Django进程的webpack来生成打包的包。然后 django-webpack-loader 将读取由webpack-bundle-tracker编写的 JSON 文件,并使用该信息将正确的路径插入到 HTML 模板中。
这完美无缺,但有一个问题:我们的一些单元测试将使用集成的Django 测试客户端访问 Django 应用程序,它呈现完整的 HTML 响应,以便测试可以检查生成的结果。可以在没有完成任何与 webpack 相关的设置的情况下运行测试。所以打包的包和 JSON 文件可能不存在。这些不是测试前端代码所必需的,只检查动态生成的 HTML。仅仅因为有人忘记运行 webpack 导致测试失败会导致沮丧。
理想情况下,我会让 django-webpack-loader<script>在运行测试时只在插入的标签中使用虚拟 URL ,从而消除对 webpack 生成的文件的依赖。我有什么选择来解决这种依赖性?
如果您想对pytest运行的所有测试进行更高级别的测试,您可以添加到您的conftest.py:
@fixture(autouse=True)
def no_webpack_loaded(monkeypatch):
def mockreturn(loader, bundle_name):
return []
monkeypatch.setattr(WebpackLoader, "get_bundle", mockreturn)
Run Code Online (Sandbox Code Playgroud)
您可以完全修补加载程序以绕过 django-webpack-loader 可能执行的任何操作:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
414 次 |
| 最近记录: |