首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用Jest测试svelte组件时忽略scss

在使用Jest测试svelte组件时忽略scss
EN

Stack Overflow用户
提问于 2020-06-16 11:18:04
回答 2查看 640关注 0票数 1

问题:我想用jest测试svelte组件,但是无法这样做,因为我不能忽略组件中提到的scss样式。有没有办法绕过scss。到目前为止,我的方法如下:

jest.config.js

代码语言:javascript
复制
module.exports = {
    transform: {
        '^.+\\.svelte$': 'svelte-jester',
        '^.+\\.js$': 'babel-jest',
    },
    moduleFileExtensions: ['js', 'svelte'],
    moduleDirectories: ['node_modules', 'src'],
    moduleNameMapper: {
        "^.*\\.scss$": "SCSSStub.js"
    }
}

babel.config.js

代码语言:javascript
复制
module.exports = {
    presets: [
        [
            '@babel/preset-env',
            {
                targets: {
                    node: 'current',
                },
            },
        ],
    ],
}

SCSSStub.js

代码语言:javascript
复制
module.exports = {};

除了这种方法之外,我还尝试了身份-obj-代理以及添加

代码语言:javascript
复制
moduleNameMapper: { '^.+\\.(css|less|scss)$': 'babel-jest',},

敬jest.config.js。他们都不起作用。

EN

回答 2

Stack Overflow用户

发布于 2020-06-18 15:03:24

问题在于您配置moduleNameMapper的方式。regex会寻找类似于filename\.scss的东西

由于有一个额外的正斜杠,因此正斜杠将被转义,而不是点,只有在扩展名之前有一个正斜杠时,才会发生模拟。

将regex更改为^.+\.(css|less|scss)$,它应该会像预期的那样工作。

票数 0
EN

Stack Overflow用户

发布于 2020-09-22 21:10:43

您需要让svelte-jester运行预处理程序。根据他们的自述

jest.config.js

代码语言:javascript
复制
// replace this line
'^.+\\.svelte$': 'svelte-jester',
// with this one
'^.+\\.svelte$': ['svelte-jester', {preprocess: true}],

然后,您可能会遇到没有svelte.config.js文件的问题,如果您正在运行预处理器,svelte-jester希望您拥有这个文件。关于这个的讨论就在这里解决办法就在这里。为了更好地衡量,以下是我的解决方案:

svelte.config.js

代码语言:javascript
复制
import autoPreprocess from 'svelte-preprocess';

const preprocessOptions = {
  scss: {
    // your scss preprocess options here
  }
};

const preprocess = autoPreprocess(preprocessOptions);

export {
  preprocess,
  preprocessOptions
};

rollup.config.js

代码语言:javascript
复制
// ... snip
import {preprocess} from './svelte.config';
// ... snip
    svelte({
      preprocess,
      // ... other svelte options
    }),
// ... snip

编辑:如果您收到与本机模块相关的错误,那么最简单的解决方案是将svelte.config.jsrollup.config.js转换为commonjs语法。我只是在特定的Docker构建中才看到这一点,而不是在我的本地机器上,所以希望上面的内容总体上是正确的。

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

https://stackoverflow.com/questions/62407209

复制
相关文章

相似问题

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