设置
Marko Testing Library
不依赖于任何测试运行器。然而,它依赖于测试环境。这个包适
用于测试服务器端和客户端的 Marko 模板,并为每个模板提供了一个略微不同的优化实现
。就像在 Marko 中一样,这是用一
个浏览器垫片完成
的。
浏览器垫片被许多 工具接收,包括所有打包器和一些测试运行器。
下面是一些配置的例子,用一些流行的测试运行器测试服务器和浏览器组件。
Jest
为了让 Jest 能够理解 Marko 模板,你必须
先安装 @marko/jest
预设。这使
得你的 Marko 模板可以被导入到你的测试中。
在 Jest 中,有一 个浏览器选项,它将告 诉 Jest 解决上面提到的所有模块 的浏览器垫片版本 。
要测试在客户端呈现的组件,请确保同时启用 browser
选项和预设,这样就可以了。
jest.config.js
module.exports = {
preset: '@marko/jest/preset/browser',
}
对于测试在服务器端渲染的组件,我们可以改用 @marko/jest/preset/node
作为我们的
jest 预设。
jest.config.js
module.exports = {
preset: '@marko/jest/preset/node',
}
一个 Jest 配置也可以有多 个项目, 我们可以用它来创建一个服务器端测试和客户端测试的组合配置,像这样:
jest.config.js
module.exports = {
projects: [
{
displayName: 'server',
preset: '@marko/jest/preset/node',
testRegex: '/__tests__/[^.]+\\.server\\.js$',
},
{
displayName: 'browser',
preset: '@marko/jest/preset/browser',
testRegex: '/__tests__/[^.]+\\.browser\\.js$',
},
],
}
Mocha
Mocha 对于测试 Marko 组件也非常有效。然而,Mocha 并不了 解浏览器垫片,这 意味着开箱即用,它只能用于服务器端的 Marko 组件。
要用 mocha
运行服务器端的 Marko 测试,你可以简单地运行以下命令:
mocha -r marko/node-require
这样就可以启 用Marko require hook, 允许你在测试中直接要求服务器端的 Marko 模板。
对于使用 Mocha 的客户端测试组件,通常你会使用捆绑器来构建你的测试(这将正确解决 上面提到的浏览器垫片),然后你可以在某种浏览器上下文中加载这些测试。