设置
AITDD 运行在 Bun 上,确保先安装最新版本的 Bun。
-
全局安装 AITDD 作为命令行工具:
curl -sSL https://raw.githubusercontent.com/di-sukharev/AI-TDD/master/install.sh | bash
-
从 OpenAI 获取你的 API 密钥。确保添加支付信息以使 API 正常工作。
-
将密钥设置到 AITDD 配置中:
aitdd config set OPENAI_API_KEY <your_api_key>
你的 API 密钥会储存在本地的
~/.aitdd/config
配置文件中,不会以其他任何方式存储。 -
设置运行测试的命令:
aitdd config set RUN_TESTS "npm run test"
你的 API 密钥会储存在本地的 ~/.aitdd/config
配置文件中,不会以其他任何方式存储。
示例
下面是一个使用 Jest 和 Testing Library 编写的前端测试套件。是的,AITDD 甚至可以轻松通过前端测试:
import React from "react";
import { rest } from "msw";
import { setupServer } from "msw/node";
import { render, fireEvent, waitFor, screen } from "@testing-library/react";
import "@testing-library/jest-dom";
import Fetch from "../fetch";
const server = setupServer(
rest.get("/greeting", (req, res, ctx) => {
return res(ctx.json({ greeting: "hello there" }));
})
);
beforeAll(() => server.listen());
afterEach(() => server.resetHandlers());
afterAll(() => server.close());
test("loads and displays greeting", async () => {
render(<Fetch url="/greeting" />);
fireEvent.click(screen.getByText("Load Greeting"));
await waitFor(() => screen.getByRole("heading"));
expect(screen.getByRole("heading")).toHaveTextContent("hello there");
expect(screen.getByRole("button")).toBeDisabled();
});
test("handles server error", async () => {
server.use(
rest.get("/greeting", (req, res, ctx) => {
return res(ctx.status(500));
})
);
render(<Fetch url="/greeting" />);
fireEvent.click(screen.getByText("Load Greeting"));
await waitFor(() => screen.getByRole("alert"));
expect(screen.getByRole("alert")).toHaveTextContent("Oops, failed to fetch!");
expect(screen.getByRole("button")).not.toBeDisabled();
});
准备好了吗?这是由 AITDD(GPT-4)生成并通过测试的代码:
import React, { useState } from "react";
function Fetch({ url }) {
const [data, setData] = useState(null);
const [error, setError] = useState(null);
const [loading, setLoading] = useState(false);
async function fetchData() {
setLoading(true);
try {
const response = await fetch(url);
if (!response.ok) throw new Error("Failed to fetch");
const data = await response.json();
setData(data.greeting);
} catch (error) {
setError(error.message);
} finally {
setLoading(false);
}
}
return (
<div>
{data && <h1 role="heading">{data}</h1>}
{error && <div role="alert">{error}</div>}
<button onClick={fetchData} disabled={loading}>
Load Greeting
</button>
</div>
);
}
export default Fetch;
使用方法
你可以这样调用 aitdd:
aitdd run
费用
你需要支付你对 OpenAI API 的请求费用。AITDD 默认使用最新的 GPT 模型,请查看其 定价。最大响应 Token 数设置为 2000,你可以通过 ait config set maxTokens=<number>
调整。
我无法让 ChatGPT 模型解决问题。我尝试用响应示例指导它,但它无法理解我的意图。如果你想通过 ChatGPT 管理它——请测试并提交 Pull Request 🚀