Skip to main content
niceeval/expect 只提供纯 Match factory。Match 比较一个候选值,不记录结果,也不决定判定或分数。t.check(value, match) 在调用时读取 value 并直接登记 Assertion;返回的 handle 只配置同一条 entry。

使用方式

Matchers

下面每个 matcher 的签名和说明从 niceeval/expect 的源码生成,和当前实现保持同步。

and

or

not

includes

excludes

pattern

similarity

归一化 Levenshtein similarity;它是连续分数,不携带默认阈值或 verdict 策略。

includesUrl

至少含 min 个去重 http(s) URL 的纯文本 matcher。

hasSections

至少含 min 个 Markdown heading 的纯文本 matcher。

isDefined

isTrue

value === true 的 refinement matcher。

isFalse

value === false 的 refinement matcher。

commandSucceeded

CommandResult-like candidate 的 exitCode === 0 matcher;不读取 stdout / stderr。

equals

matches

satisfies

defineValueMatch

defineScoreMatch

eventMatch

匹配工具调用

ToolMatch 比较一条 LogicalToolOccurrencecalledTool 接收 ToolMatch,或只按名称选择的薄糖;第二参数只表达次数。notCalledTool 使用相同 selector 表达零匹配。
普通 JSON 用 jsonMatch,路径用 referencesAnyPath,命令 token 用 commandMatch。输出不存在、材料不完整或 HITL 尚未完成时,Match 会成为 unavailable,不会伪装成普通不匹配。 完整签名、材料状态与三值计数规则见 Scoped assertions

常见用法示例

组合与三态

同一 and / or 里的 Match 必须属于同一 domain。布尔 Match 的内部结果是 matchedmismatchedunavailableor 只有在没有子项命中且至少一项证据不完整时才返回 unavailable,不会把未知当成否定。Match 自身不持有判定、计分或控制流;.atLeast(n).score(n).orStop() 属于登记后的 AssertionHandle。 下面列出 Match 值本身的稳定字段。品牌和 evaluator 是模块私有实现,不属于作者 API。

Match

domain

name

BooleanMatch

kind

[matchRefinementBrand]

ScoreMatch

kind

atLeast

自定义 matcher

布尔自定义 Match 用 defineValueMatch,连续分数用 defineScoreMatch。两者只实现单候选比较;读取文件、扫描事件、决定 coverage 或修改判定仍由 Assertion 登记入口与 Runner 负责。