有没有办法将Karma配置中加载的文件移到新目录中,比如/base/?我有一个包含源文件的外部项目。我可以通过../../directory加载文件。但是,它会将文件插入到/absolute/文件夹中。如果我在另一台计算机上加载测试,则/absolute/的目录不同。有没有我遗漏的预处理器或配置?我搜索了karma文档,但找不到我要找的东西。
// 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 }
],发布于 2018-09-14 01:02:19
Karma为您请求它加载Karma的basePath之外的文件生成以/absolute/...开头的路径。Karma之所以这样做,是因为没有一种简单的方法可以通过通常的/base/路径提供这些文件的路径,该路径既是唯一的,又是可推断的。如果你要给basePath上面的文件提供一个相对路径,Karma不能仅仅把它和/base/结合起来。例如,如果您的files数组中有../my/file.js和../../my/file.js,然后与/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上都使用过这个解决方案。
https://stackoverflow.com/questions/46065194
复制相似问题