Inventar a GPT con un suite de prueba lo hace que escriba un código de escritura impresionantemente preciso
AITDD se ejecuta en Bun, asegúrese de instalar primero la última versión de BUN.
Instale AITDD a nivel mundial como una CLI:
curl -sSL https://raw.githubusercontent.com/di-sukharev/AI-TDD/master/install.sh | bash
Obtenga su llave API de OpenAI. Asegúrese de agregar detalles de pago, por lo que API funciona.
Establezca la tecla en la configuración AITDD:
aitdd config set OPENAI_API_KEY < your_api_key >
Su tecla API se almacena localmente en el archivo ~/.aitdd/config
configuración y no se almacena en ningún lado de otra manera.
Establezca el comando para ejecutar las pruebas:
aitdd config set RUN_TESTS " npm run test "
Su tecla API se almacena localmente en el archivo ~/.aitdd/config
configuración y no se almacena en ningún lado de otra manera.
Aquí hay una suite de prueba frontend escrita en la biblioteca Jest + Testing. Sí, AITDD pasa fácilmente incluso las pruebas de frontend:
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 ( ) ;
} ) ;
¿Listo? Aquí está el código generado por AITDD (GPT-4) para aprobar la prueba:
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 ;
Puedes llamar a AITDD así:
aitdd run
Paga por sus propias solicitudes a OpenAI API. AITDD utiliza el último modelo GPT de forma predeterminada, verifique su precio. Los tokens de respuesta máxima se establecen en 2000, puede ajustarlo a través de ait config set maxTokens=<number>
.
No pude administrar el modelo CHATGPT para resolver el problema. Traté de dispararlo con un ejemplo de respuesta, no entiende lo que quiero. Si desea intentar administrarlo a través de ChatGPT, pruebe y abra un PR