首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用django-webpack-加载器时运行单元测试而不生成资产。

在使用django-webpack-加载器时运行单元测试而不生成资产。
EN

Stack Overflow用户
提问于 2017-04-27 14:30:46
回答 2查看 513关注 0票数 5

我正在使用一些前端JavaScript代码处理Django项目。我正在将JavaScript的打包和缩小从djanog管道迁移到webpackdjango-webpack-装载机

Django - webpack -装载机的工作方式是从任何Django进程中分离运行webpack来生成打包的包。django-webpack-加载程序随后将读取由webpack捆绑追踪器编写的JSON文件,并使用这些信息将正确的路径插入到HTML模板中。

这是完美无缺的,但有一个缺点:我们的一些单元测试将使用集成的Django测试客户端访问Django应用程序,该应用程序呈现完整的HTML,以便测试能够检查生成的结果。测试可以在没有任何webpack相关设置的情况下运行。因此,打包的包和JSON文件可能不存在。这些不是测试前端代码所必需的,只有动态生成的HTML才会被检查。仅仅因为有人忘了跑webpack,考试就失败了,这会导致挫折。

理想情况下,我会让django- webpack -加载器在运行测试时只在插入的<script>标记中使用虚拟URL,从而消除对webpack生成的文件的依赖。我有什么选择来解决这个依赖?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-16 03:03:50

您可以对加载程序进行完全修补,以绕过django-webpack-加载程序可能做的任何事情:

代码语言:javascript
复制
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
票数 4
EN

Stack Overflow用户

发布于 2019-03-14 11:51:35

如果您想在更高级别上执行pytest运行的所有测试,则可以将其添加到conftest.py中。

代码语言:javascript
复制
@fixture(autouse=True)
def no_webpack_loaded(monkeypatch):
    def mockreturn(loader, bundle_name):
        return []
    monkeypatch.setattr(WebpackLoader, "get_bundle", mockreturn)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43660725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档