Trivet Library
Trivet库是一个强大的工具,用于以编程方式在您的Rivet项目上运行测试。它提供了一种验证和测试Rivet图功能的方法。本文档中的所有代码示例均使用TypeScript编写。
如何使用Trivet库
步骤1:安装Trivet库
您可以使用yarn通过以下命令安装Trivet库:
yarn add -D @ironclad/trivet
步骤2:导入必要的函数和类型
你需要从Trivet库导入runTrivet
函数,以及从Rivet节点库导入loadProjectFromFile
函数。如果使用TypeScript,还需要从Trivet库导入TrivetOpts
和TrivetGraphRunner
类型。
import { runTrivet, TrivetOpts, TrivetGraphRunner } from '@ironclad/trivet';
import { loadProjectFromFile } from '@ironclad/rivet-node';
步骤3:加载您的项目
您可以通过loadProjectFromFile
函数从文件加载您的Rivet项目,或者以您希望的任何其他方式加载项目文件。
const project = await loadProjectFromFile('path/to/your/project.rivet');
步骤4:创建您的测试套件
您需要创建一个包含TrivetTestSuite
对象的数组来表示您的测试套件。每个TrivetTestSuite
对象应包含一个id、测试和验证图的id,以及一个包含TrivetTestCase
对象的数组来表示要运行的测试用例。
TODO trivet应该能够从rivet项目文件或项目中加载测试套件。
// TODO: Load or create your TrivetTestSuite objects
const testSuites = [...];
步骤5:创建您的Rivet选项
你需要创建一个包含你的项目、测试套件和运行图函数的TrivetOpts
对象。
由于Rivet集成到您自己的图运行架构中,可能涉及外部调用,因此需要您自行创建GraphProcessor
并使用正确的图和输入来执行它。
作为一个基础示例,您可以这样做:
const opts: TrivetOpts = {
project,
testSuites,
runGraph: async (project, graphId, inputs) => {
const processor = new GraphProcessor(project, graphId);
return processor.processGraph(
{
// ProcessContext such as settings and native API
},
inputs,
{},
);
},
};
步骤6:运行您的测试
最后,您可以使用runTrivet
函数运行测试。该函数接收您的TrivetOpts
对象,并返回一个Promise,该Promise会解析为您的测试结果。
const results = await runTrivet(opts);
console.log(results);
API参考
Trivet API可能会发生变化,但当前API文档如下。
类型
- TrivetGraphRunner
type TrivetGraphRunner = (project: Project, graphId: GraphId, inputs: GraphInputs) => Promise<GraphOutputs>;
此类型表示一个函数,该函数接收一个项目、一个graphId和输入,并返回一个解析为GraphOutputs的Promise。
- TrivetOpts
interface TrivetOpts {
project: Project;
testSuites: TrivetTestSuite[];
iterationCount?: number;
runGraph: TrivetGraphRunner;
onUpdate?: (results: TrivetResults) => void;
}
此界面表示可以传递给runTrivet
函数的选项。它包括要测试的项目、要运行的测试套件、每个测试的迭代次数、运行图的函数,以及一个在更新时调用的可选回调函数。
- TrivetTestSuite
interface TrivetTestSuite {
id: string;
name?: string;
description?: string;
testGraph: string;
validationGraph: string;
testCases: TrivetTestCase[];
}
此界面表示一个测试套件,包含一个ID、可选的名称和描述、测试图的ID、验证图的ID以及要运行的测试用例。
- TrivetTestCase
interface TrivetTestCase {
id: string;
input: Record<string, unknown>;
expectedOutput: Record<string, unknown>;
}
此界面表示一个测试用例,包含ID、输入值和预期输出值。
函数
- 运行Rivet
function runTrivet(opts: TrivetOpts): Promise<TrivetResults>;
该函数接收一个TrivetOpts
对象并返回一个解析为TrivetResults
对象的Promise。它会将每个测试套件中的每个测试用例运行指定的迭代次数,并在每次迭代后更新结果。TrivetResults
对象包含每个测试套件的结果以及运行的迭代次数。
- createTestGraphRunner
function createTestGraphRunner(opts: { openAiKey: string }): TrivetGraphRunner;
该函数接收一个包含openAiKey
的对象,并返回一个`TrivetGraphRunner