{"meta":{"title":"Creación de objetos ficticios para abstraer capas","intro":"Chat de Copiloto puede ayudar a crear objetos ficticios que puede usar para pruebas unitarias.","product":"GitHub Copilot","breadcrumbs":[{"href":"/es/copilot","title":"GitHub Copilot"},{"href":"/es/copilot/tutorials","title":"Tutoriales"},{"href":"/es/copilot/tutorials/copilot-cookbook","title":"Recetario de GitHub Copilot"},{"href":"/es/copilot/tutorials/copilot-cookbook/testing-code","title":"Probar el código"},{"href":"/es/copilot/tutorials/copilot-cookbook/testing-code/create-mock-objects","title":"Creación de objetos ficticios"}],"documentType":"article"},"body":"# Creación de objetos ficticios para abstraer capas\n\nChat de Copiloto puede ayudar a crear objetos ficticios que puede usar para pruebas unitarias.\n\nAl crear pruebas unitarias, es importante garantizar su aislamiento y que no dependan de servicios externos. Una manera de lograrlo es crear objetos ficticios que abstraigan capas de la aplicación.\nChat de Copiloto puede ayudarle a generar el código que necesita para crear estos objetos ficticios.\n\n## Escenario de ejemplo\n\nImagina un sitio web creado con TypeScript que muestra una lista de corredores. Tienes un servicio que recupera los ejecutores de una base de datos y el código del lado servidor que usa este servicio. Quieres probar el código del lado servidor, pero no quieres realizar una llamada a la base de datos. Puede pedir que Chat de Copiloto genere un objeto ficticio para el servicio.\n\n```typescript id=mock-service\n// SvelteKit example at +page.server.ts\nimport service from './service';\n\nexport async function load({ params }) {\n  const runner = await service.getRunner(params.id);\n\n  return {\n    runner\n  };\n}\n```\n\n## Mensaje de ejemplo\n\nEn este ejemplo se supone que usas [vitest](https://vitest.dev/) para las pruebas, pero funcionará con otros ejecutores de pruebas.\n\n```copilot copy prompt ref=mock-service\n/tests Create a unit test to ensure the service is called correctly. Mock the service object.\n```\n\nSi ya tiene una prueba existente que desea usar Copilot como modelo, puede usar `#file: path/to/test-file.js` para indicar la ruta del archivo, e incluir esta información en el prompt.\n\n## Respuesta de ejemplo\n\n> \\[!NOTE] La respuesta siguiente es un ejemplo. Las respuestas de Chat de Copiloto no son deterministas, por lo que puedes obtener una respuesta diferente a la aquí mostrada.\n\nCopilot proporciona el plan que implementará y el texto del código que incluye los simulacros.\n\n```typescript\nimport { describe, it, expect, vi, beforeEach } from 'vitest';\nimport { load } from './+page.server.ts';\n\n// Mock the entire service module\nvi.mock('./service', () => ({\n  default: {\n    getRunner: vi.fn()\n  }\n}));\n\n// Import the mocked service\nimport service from './service';\n\ndescribe('load function', () => {\n  const mockRunner = {\n    id: '123',\n    name: 'Test Runner',\n    status: 'active'\n  };\n\n  beforeEach(() => {\n    // Reset mock before each test\n    vi.resetAllMocks();\n\n    // Setup default mock implementation\n    (service.getRunner as any).mockResolvedValue(mockRunner);\n  });\n\n  it('should fetch runner with correct id', async () => {\n    const params = { id: '123' };\n    const result = await load({ params });\n\n    expect(service.getRunner).toHaveBeenCalledWith('123');\n    expect(service.getRunner).toHaveBeenCalledTimes(1);\n    expect(result).toEqual({ runner: mockRunner });\n  });\n});\n```\n\n## Lectura adicional\n\n* [Ingeniería de mensajes para GitHub Copilot Chat](/es/copilot/using-github-copilot/prompt-engineering-for-github-copilot)\n* [Procedimientos recomendados para usar GitHub Copilot](/es/copilot/using-github-copilot/best-practices-for-using-github-copilot)"}