{"meta":{"title":"Creación de objetos ficticios para abstraer capas","intro":"Chat de Copiloto puede ayudar con la creación de objetos ficticios que puedes usar para las pruebas unitarias.","product":"GitHub Copilot","breadcrumbs":[{"href":"/es/copilot","title":"GitHub Copilot"},{"href":"/es/copilot/tutorials","title":"Tutoriales"},{"href":"/es/copilot/tutorials/copilot-chat-cookbook","title":"Guía de GitHub Copilot Chat"},{"href":"/es/copilot/tutorials/copilot-chat-cookbook/testing-code","title":"Probar el código"},{"href":"/es/copilot/tutorials/copilot-chat-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 con la creación de objetos ficticios que puedes usar para las 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. El Chat de Copiloto puede ayudarte a generar el código que necesitas para crear estos objetos ficticios.\n\n## Escenario de ejemplo\n\nImagina un sitio web creado con TypeScript que muestra una lista de corredores. Tiene 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. Puedes pedir al Chat de Copiloto que 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## Ejemplos de indicaciones\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 tienes una prueba existente que quieres que Copilot use como modelo, puedes utilizar `#file: path/to/test-file.js` para proporcionar la ruta de acceso al archivo e incluir esta información en la indicación.\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 código de texto que incluye las simulaciones.\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## Información 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)"}