跳至主要内容

Trivet Library

Trivet库是一个强大的工具,用于以编程方式在您的Rivet项目上运行测试。它提供了一种验证和测试Rivet图功能的方法。本文档中的所有代码示例均使用TypeScript编写。

如何使用Trivet库

步骤1:安装Trivet库

您可以使用yarn通过以下命令安装Trivet库:

yarn add -D @ironclad/trivet

步骤2:导入必要的函数和类型

你需要从Trivet库导入runTrivet函数,以及从Rivet节点库导入loadProjectFromFile函数。如果使用TypeScript,还需要从Trivet库导入TrivetOptsTrivetGraphRunner类型。

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