跳到主要内容

设置

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 的客户端测试组件,通常你会使用捆绑器来构建你的测试(这将正确解决 上面提到的浏览器垫片),然后你可以在某种浏览器上下文中加载这些测试。