capture-api-response-test-fixture
Lưu trữ và quản lý các test fixture phản hồi API để xác thực phân tích cú pháp của nhà cung cấp. Các fixture được tổ chức trong các thư mục con __fixtures__ bên trong các gói nhà cung cấp, sử dụng quy ước đặt tên được ghi lại trong các ví dụ hiện có. Hỗ trợ hai mẫu kiểm thử: generateText (ghi phản hồi thô vào console và sao chép vào fixture) và streamText (sử dụng helper includeRawChunks và saveRawChunks để thu thập các chunk luồng). Khuyến nghị lưu trữ phản hồi thực tế của nhà cung cấp trừ khi các ràng buộc về kích thước yêu cầu cắt bỏ để bảo toàn ngữ nghĩa...
npx skills add https://github.com/vercel/ai --skill capture-api-response-test-fixtureAPI Response Test Fixtures
For provider response parsing tests, we aim at storing test fixtures with the true responses from the providers (unless they are too large in which case some cutting that does not change semantics is advised).
The fixtures are stored in a __fixtures__ subfolder, e.g. packages/openai/src/responses/__fixtures__. See the file names in packages/openai/src/responses/__fixtures__ for naming conventions and packages/openai/src/responses/openai-responses-language-model.test.ts for how to set up test helpers.
You can use our examples under /examples/ai-functions to generate test fixtures.
generateText (doGenerate testing)
For generateText, log the raw response output to the console and copy it into a new test fixture.
import { openai } from '@ai-sdk/openai';
import { generateText } from 'ai';
import { run } from '../lib/run';
run(async () => {
const result = await generateText({
model: openai('gpt-5-nano'),
prompt: 'Invent a new holiday and describe its traditions.',
});
console.log(JSON.stringify(result.response.body, null, 2));
});
streamText (doStream testing)
For streamText, you need to set includeRawChunks to true and use the special saveRawChunks helper. Run the script from the /example/ai-functions folder via pnpm tsx src/stream-text/script-name.ts. The result is then stored in the /examples/ai-functions/output folder. You can copy it to your fixtures folder and rename it.
import { openai } from '@ai-sdk/openai';
import { streamText } from 'ai';
import { run } from '../lib/run';
import { saveRawChunks } from '../lib/save-raw-chunks';
run(async () => {
const result = streamText({
model: openai('gpt-5-nano'),
prompt: 'Invent a new holiday and describe its traditions.',
includeRawChunks: true,
});
await saveRawChunks({ result, filename: 'openai-gpt-5-nano' });
});