karma config将文件移动到基 目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了karma config将文件移动到基 目录相关的知识,希望对你有一定的参考价值。

有没有办法将Karma配置中加载的文件移动到新目录,例如/base/?我有一个包含源文件的外部项目。我可以通过../../directory加载文件。但是,它将文件插入/absolute/文件夹。如果我在另一台计算机上加载测试,/absolute/的目录是不同的。是否有预处理器或我缺少的配置?我搜索了业力文档,但找不到我要找的东西。

 // list of files / patterns to load in the browser
files: [   
    { pattern: 'node_modules/jquery/dist/jquery.min.js', included: false },
    { pattern: 'node_modules/knockout/build/output/knockout-latest.js', included: false },
    { pattern: 'node_modules/knockout-mapping/dist/knockout.mapping.min.js', included: false },
    { pattern: 'node_modules/knockout-postbox/build/knockout-postbox.min.js', included: false },
    { pattern: '../FantasyFootball/wwwroot/js/site.js', included: false, served: true, watched: true },
    { pattern: 'tests/*.js', included: false },
    { pattern: 'test-main.js', included: true }         
],
答案

Karma生成的路径以/absolute/...开头,用于文件,要求它加载Karma的basePath之外的文件。 Karma这样做是因为没有简单的方法可以通过通常的/base/路径提供这些文件的路径,这条路径既独特又可推断。如果要提供basePath上方文件的相对路径,Karma不能只将它与/base/结合使用。例如,如果你的../my/file.js阵列中有../../my/file.jsfiles,那么与/base/结合,它们都将转变为/my/file.js路径。对于这样的情况,Karma通过使用/absolute/并在磁盘上附加文件的绝对路径来生成唯一且可推断的路径。

好的,那你离开了哪里?您希望Karma在basePath之外加载文件,并且您希望能够在加载程序的设置中使用它们的路径。这个问题可以克服。您可以修改karma.conf.js以提供有用的信息来计算所需的路径:

client: {
  absoluteTopDir: path.join("/absolute/", __dirname),
},

然后在test-main.js中,您需要使用absoluteTopDir参数:

var absoluteTopDir = window.__karma__.config.absoluteTopDir;
require.config({
  baseUrl: "...",
  paths: {
    foo: absoluteTopDir + "../../my/file",
  },
});

我已经运行Karma多年没有任何麻烦,但我最近碰到了你遇到的问题,并在我的一个测试套件中使用了我上面描述的方法并取得了巨大的成功。

我已经将这个解决方案与RequireJS和SystemJS一起使用了。

以上是关于karma config将文件移动到基 目录的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的性能慢到爬行我将方法移动到基类中?

如何通过 Angular、Karma 和 Webpack 的单独文件拆分代码覆盖率?

karma記錄

IntelliJ中的Karma配置

karma与webpack结合

克隆到基目录 git@bitbucket.org:myapp/configurations.git 时出错,无法发送频道请求