Wenn Sie GPT mit einer Testsuite fordern
AITDD läuft auf Bun, stellen Sie sicher, dass Sie zuerst die neueste Bun -Version installieren.
Installieren Sie AITDD weltweit als CLI:
curl -sSL https://raw.githubusercontent.com/di-sukharev/AI-TDD/master/install.sh | bashHolen Sie sich Ihren API -Schlüssel von OpenAI. Stellen Sie sicher, dass Sie Zahlungsdetails hinzufügen, damit die API funktioniert.
Stellen Sie den Schlüssel auf AITDD -Konfiguration ein:
aitdd config set OPENAI_API_KEY < your_api_key > Ihr API -Schlüssel wird lokal in ~/.aitdd/config -Konfigurationsdatei gespeichert und nirgendwo anders gespeichert.
Setzen Sie den Befehl, um die Tests auszuführen:
aitdd config set RUN_TESTS " npm run test " Ihr API -Schlüssel wird lokal in ~/.aitdd/config -Konfigurationsdatei gespeichert und nirgendwo anders gespeichert.
Hier ist eine Frontend -Testsuite, die in der Scherz + Testbibliothek geschrieben wurde. Ja, AITDD führt leicht auch Frontend -Tests durch:
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 ( ) ;
} ) ;Bereit? Hier ist der von AITDD (GPT-4) generierte Code, um den Test zu bestehen:
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 ; Sie können AITDD so nennen:
aitdd run Sie zahlen für Ihre eigenen Anfragen, um API zu eröffnen. AITDD verwendet standardmäßig das neueste GPT -Modell und überprüfen Sie die Preisgestaltung. Maximale Antwort -Token werden auf 2000 eingestellt. Sie können es über ait config set maxTokens=<number> einstellen.
Ich konnte das Chatgpt -Modell nicht verwalten, um das Problem zu lösen. Ich habe versucht, es mit einem Antwortbeispiel zu schießen, es versteht nicht, was ich will. Wenn Sie versuchen möchten, es über Chatgpt zu verwalten - testen Sie es und öffnen Sie eine PR