首页 > 解决方案 > 如何确定 Karma 提供的资产的相对路径?

问题描述

我正在编写包含测试数据的测试,通过 Karma 提供服务:

// Karma config
files: [
  { pattern: "src/app/**/*.xml", served: true, included: false, watched: false },
]

这按预期工作,我可以在测试运行时从浏览器src/app/myservice/test-data/sample.xml访问。http://localhost:9876/base/src/app/myservice/test-data/sample.xml我不明白的是,在编写测试时我应该如何确定这条路径?

当我通过 webpack 构建我的应用程序时,我可以使用 CopyPlugin 将资产复制到一个众所周知的位置(相对于构建目录)。我可以使用 ES6 代码模块计算相对路径new URL(import.meta.url, "./subdir/asset.ext"),这给了我一个fetch可用的 URL。(Webpack 最近也为此添加了本机支持。)

问题是,我的代码是 TypeScript,由karma-typescript. 我相信这意味着我需要module: "commonjs"在 my中进行设置tsconfig,这会导致import.meta.url语法错误。

作为一种临时解决方法,我可以在 中写入fetch("/base/src/app/myservice/test-data/sample.xml")myservice.spec.ts并且它通过了,但是如果我将其重命名myserviceotherservice或将其移动到src/app/services/myservice,测试将失败,并且不会立即明白为什么。我需要测试能够在运行时确定资产的路径,或者我需要一种在捆绑过程中注入测试资产的方法。

标签: typescriptkarma-runnerkarma-typescript

解决方案


推荐阅读