pattern-test
Write and run pattern tests
安装与使用
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
查看来源 ↗使用指南技能说明
Use Skill("ct") for ct CLI documentation when running commands.
Test Sub-Pattern
Prerequisite Check
Before writing tests, verify the pattern has:
-
pattern<Input, Output>()(not single-typepattern<State>()) - Actions typed as
Stream<T>in Output interface - Bound handlers returned from the pattern
If missing, fix the pattern first - tests can't call .send() without proper Output types.
Read First
-
docs/common/workflows/pattern-testing.md- Full test file format and prerequisites
Test Command
deno task ct test packages/patterns/[name]/[file].test.tsx
Test File Template
import { action, computed, pattern } from "commontools";
import Pattern from "./pattern.tsx";
export default pattern(() => {
// 1. Instantiate pattern under test
const instance = Pattern({ /* input */ });
// 2. Define actions (trigger events)
const action_do_something = action(() => {
instance.someAction.send();
});
// 3. Define assertions (computed booleans)
const assert_initial_state = computed(() => instance.someField === expectedValue);
const assert_after_action = computed(() => instance.someField === newValue);
// 4. Return tests array
return {
tests: [
{ assertion: assert_initial_state },
{ action: action_do_something },
{ assertion: assert_after_action },
],
};
});
Key Points
- Test each sub-pattern BEFORE writing the next one
- Use
.send()to trigger actions (requires Stream in Output type) - Use direct property access to read values (not
.get()) - Use
computed(() => boolean)for assertions
Done When
- Test file exists alongside pattern
- Tests pass
- Ready for next sub-pattern
使用示例
查看来源仓库中的使用示例与配置说明。
查看来源 ↗来源历史
- 收录时间
- 2026-01-20
- 索引更新时间
- 2026-01-26
- Branch
- main
收录与同步日期属于本站记录。源码修改历史请查看来源仓库。
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!