typescript - 如何确定 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
并且它通过了,但是如果我将其重命名myservice
为otherservice
或将其移动到src/app/services/myservice
,测试将失败,并且不会立即明白为什么。我需要测试能够在运行时确定资产的路径,或者我需要一种在捆绑过程中注入测试资产的方法。
解决方案
推荐阅读
- angular - 尽管我的后端工作正常,但我使用 Angular 5 获得了状态码 500
- extjs - Ext Js 6.0.0 手动删除表的红色小脏单元格标志
- jenkins - 如何在 Jenkins Job DSL 中结合我的种子工作?
- arrays - 尽管手动定义了 RemoteRef,但没有定义它 - Julia
- nativescript - Nativescript后台http一旦完成事件返回如何响应
- android - 尝试从有效帧中获取图像时位图为空
- .net - .NET Core 2.0 ASP.NET MVC 下载文件和调用文件保存对话框
- java - 使用 AWS Lambda (java) 中的环境变量更改 Log4j 级别
- vue.js - 如何在 Konva.js 中创建碰撞
- android - 我怎样才能让回收站视图从最后一个位置转到第一个位置