跳至主要内容

设置

Marko 测试库 不依赖于任何测试运行器。但是,它依赖于测试环境。此包适用于测试服务器端和客户端 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 --require marko/node-require

这启用了 Marko require 钩子,并允许你直接在测试中需要服务器端 Marko 模板。

对于使用 Mocha 进行客户端组件测试,你通常会使用打包器来构建你的测试(这将正确解析上面提到的浏览器垫片),然后你可以在某种浏览器上下文中加载这些测试。