运行和测试助手
我们将在 2023 年晚些时候停用助手功能 - 但你仍然可以使用旧版本的 Sketch 或命令行界面来使用它。 了解更多
本指南涵盖了在开发和发布后,在 NodeJS 中运行和测试助手的各种方法。
如我们的 入门 指南中所述,助手可以打包在本地并添加到 Sketch 文档中。但这有一些限制,尤其是在积极开发过程中。例如,像 console.log
和断点调试这样的功能不可用,并且开发反馈循环较慢,因为你需要在每次更改后完全重新编译和重新打包你的助手。
使用 NodeJS 开发和运行你的助手可以帮助缓解这些问题。助手架构从上到下都是 TypeScript,因此在纯粹使用 NodeJS 时没有隐藏的复杂性或陷阱。
测试驱动的助手开发
在积极开发助手时,使用 TDD 方法非常有用,可以让你更有信心助手按预期工作。
💡我们 核心助手 中的每个规则都包含多个测试用例,所以如果你想了解更多信息,可以查看源代码。
如果你已按照 入门 指南操作,那么你的项目将已设置好,可以使用 Jest 运行助手测试。我们在 src/__tests__/index.test.ts
中添加了一个简单的测试
本指南不涉及 Jest 及其 CLI 的解释,但你可以在 watch
模式下运行测试,以便在开发过程中快速反馈。
npm run test --watch
编写测试的思路通常是:
- 使用 Sketch 应用程序本身创建一个文档,你希望在对你的规则运行时生成特定结果。
- 将 Sketch 文档保存在你的测试旁边。
- 编写一个测试来断言你的规则生成预期结果。
在 @sketch-hq/sketch-assistant-utils
中提供了一些测试辅助方法 -
testAssistant
用于运行整个助手testRuleInAssistant
用于单独运行一个助手规则testRule
运行规则而无需父助手
💡助手项目只是普通的 NodeJS 项目,因此你不必使用 Jest 或我们在入门项目中开发的工具链 - 整个 NodeJS 生态系统以及你喜欢的工具和方法都可供你使用。
CLI
助手 CLI 可用于从 Sketch 文档中完全在命令行上收集助手结果。
使用 Sketch 助手工具
或者,你可以使用 @sketch-hq/sketch-assistant-utils
包从任何 NodeJS 应用程序中调用助手。CLI 和 Sketch 应用程序本身中的助手运行器使用相同的函数,因此可以保证一致的结果。
下面是一个不完整的示例,展示了如何从磁盘上的 Sketch 文档运行单个助手。该包导出完整的 TypeScript 类型,因此对 API 的进一步探索留给读者练习。
import { runAssistant } from '@sketch-hq/sketch-assistant-utils'
runAssistant({
processedFile,
assistant,
env,
cancelToken,
getImageMetadata,
ignoreConfig,
ruleTimeout,
})
.then((res) => {
// Handle success
})
.catch((err) => {
// Handle error
})