karma config将文件移动到基 目录

问题描述 投票:1回答:1

有没有办法将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 }         
],
requirejs karma-runner
1个回答
0
投票

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一起使用了。

© www.soinside.com 2019 - 2024. All rights reserved.