Skip to main content
在你为 LangGraph 代理制作原型之后,一个自然的下一步是添加测试。本指南涵盖了一些在编写单元测试时可以使用的有用模式。 请注意,本指南是针对 LangGraph 的,涵盖了具有自定义结构的图的相关场景——如果你刚刚开始,请查看使用 LangChain 内置的 createAgent测试

前提条件

首先,确保你已安装 vitest

入门

因为许多 LangGraph 代理依赖于状态,一个有用的模式是在每次测试前创建你的图,然后在测试中使用一个新的检查点实例对其进行编译。 下面的示例展示了一个简单的线性图如何工作,该图依次经过 node1node2。每个节点更新单个状态键 my_key

测试单个节点和边

编译后的 LangGraph 代理通过 graph.nodes 暴露对每个单独节点的引用。你可以利用这一点来测试代理中的单个节点。请注意,这将绕过编译图时传递的任何检查点:

部分执行

对于由更大图组成的代理,你可能希望测试代理内的部分执行路径,而不是整个端到端的流程。在某些情况下,将这些部分重构为子图 在语义上可能是合理的,你可以像正常情况一样单独调用它们。 但是,如果你不希望更改代理图的整体结构,可以使用 LangGraph 的持久化机制来模拟代理在所需部分开始之前暂停的状态,并在所需部分结束时再次暂停。步骤如下:
  1. 使用检查点编译你的代理(内存中的检查点 MemorySaver 对于测试来说就足够了)。
  2. 使用 asNode 参数调用代理的 update_state 方法,该参数设置为你想要开始测试的节点之前的节点名称。
  3. 使用与更新状态时相同的 thread_id 调用你的代理,并将 interruptBefore 参数设置为你想要停止的节点名称。
以下是一个在线性图中仅执行第二个和第三个节点的示例: