首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加和执行脚本react- jest library和jest

问添加和执行脚本react- jest library和jest
EN

Stack Overflow用户
提问于 2020-03-05 06:09:03
回答 2查看 1.6K关注 0票数 3

我们有通过<script>标签引入的自定义资源,这些标签可以找到html标签并呈现组件。例如,我们有<customABC />。当页面加载脚本时,查找<customABC />并返回该组件应该是什么。

在调用render之前,我正尝试通过以下方式将脚本添加到我的文档中。

代码语言:javascript
复制
  describe('DisclaimerContainer render tests', () => {
  test('simple Disclaimer renders disclaimer content', () => {

    const moduleScript = document.createElement('script');
    moduleScript.src = "https://www.example.com/assets/foo/bar/5.7.0/components.js";
    moduleScript.type = "module";
    moduleScript.async = true;
    document.body.appendChild(moduleScript); //I've also tried document.head.appendChild(moduleScript);
    const {debug} = render(<ContextDisclaimerContainer history={history}/>);
    debug();
  });

Debug()仍然显示<customABC />,而不是它应该显示的html。

当您没有npm包,并且需要包含自定义脚本时,如何配置这些脚本以在您的react- test -library jest测试中运行?

EN

回答 2

Stack Overflow用户

发布于 2020-07-15 07:36:00

通过在jest设置文件中自定义JSDOM,我成功地加载了一个脚本:

代码语言:javascript
复制
// jest.config.js
module.exports = {
  setupFilesAfterEnv: [
    './jest-setup.js',
  ],
};


// jest-setup.js
import { JSDOM } from 'jsdom';
    
const dom = new JSDOM(<!DOCTYPE html><body></body>, {
  resources: 'usable',
  runScripts: 'dangerously',
});

global.window = dom.window;
global.document = dom.window.document;

关键是用{ resources: 'usable', runScripts: 'dangerously' }配置JSDOM。请参阅executing scripts上的jsdom文档。

票数 2
EN

Stack Overflow用户

发布于 2021-10-01 11:24:59

您可以在jest配置中设置这些选项(假设jsdom环境):

代码语言:javascript
复制
    testEnvironment: 'jsdom',
    testEnvironmentOptions: {
        resources: 'usable',
        runScripts: 'dangerously',
    },

参见jsdom docs about executing scripts和jest docs on configuring the test environment。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60535438

复制
相关文章

相似问题

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