我使用karma
进行单元测试,protractor
使用模拟后端进行e2e测试。
对于这些测试,有一些文件用于模拟Web API的响应。在JavaScript中看起来像这样,它适用于浏览器上下文(karma
)和node.js上下文(量角器)。
var mockResponse = {...};
if (typeof module !== 'undefined' && module.exports) {
module.exports = mockResponse
}
但是,我无法找到使其在TypeScript中运行的方法。
这适用于集中输出(--out
),其中mockResponse
是全局变量。
let mockResponse: ResponseDto = {...};
为了让它在CommonJS(--module commonjs
)中运行,我需要以这种方式编写它。
export let mockResponse: ResponseDto = {...};
我的问题是,有没有办法编写这个文件,支持两种情境?提前谢谢。
我找到了解决方案。感谢@basarat的建议,而不是使用集中文件,将测试文件编译为CommonJS模块,并使用karma-commonjs
插件加载这些模块。
答案 0 :(得分:0)
这适用于集中输出(--out),
不要使用它。原因有很多:https://basarat.gitbooks.io/typescript/content/docs/tips/outFile.html
而是为节点和浏览器使用commonjs
模块(使用类似webpack的东西)。
浏览器快速入门:https://basarat.gitbooks.io/typescript/content/docs/quick/browser.html