{"meta":{"title":"Création d'objets fictifs pour abstraire les couches","intro":"Discussion avec Copilot peut aider à créer des objets fictifs que vous pouvez utiliser pour les tests unitaires.","product":"GitHub Copilot","breadcrumbs":[{"href":"/fr/copilot","title":"GitHub Copilot"},{"href":"/fr/copilot/tutorials","title":"Tutoriels"},{"href":"/fr/copilot/tutorials/copilot-chat-cookbook","title":"Cookbook GitHub Copilot Chat"},{"href":"/fr/copilot/tutorials/copilot-chat-cookbook/testing-code","title":"Le test du code"},{"href":"/fr/copilot/tutorials/copilot-chat-cookbook/testing-code/create-mock-objects","title":"Créer des objets fictifs"}],"documentType":"article"},"body":"# Création d'objets fictifs pour abstraire les couches\n\nDiscussion avec Copilot peut aider à créer des objets fictifs que vous pouvez utiliser pour les tests unitaires.\n\nLors de la création de tests unitaires, il est important de s’assurer qu’ils sont isolés et non en fonction des services externes. Pour ce faire, vous pouvez créer des objets fictifs qui abstraitnt des couches de votre application. Discussion avec Copilot peut vous aider à générer le code dont vous avez besoin pour créer ces objets fictifs.\n\n## Exemple de scénario\n\nImaginez un site web créé avec TypeScript qui affiche une liste de coureurs. Vous disposez d’un service qui extrait les exécuteurs d’une base de données ainsi que le code côté serveur qui utilise ce service. Vous voulez tester le code côté serveur, mais vous ne voulez pas faire d'appel à la base de données. Vous pouvez demander à Discussion avec Copilot de générer un objet fictif pour le service.\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## Exemple d’invite\n\nCet exemple suppose que vous utilisez [vitest](https://vitest.dev/) pour vos tests, mais fonctionne avec d’autres testeurs.\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 vous disposez d'un test existant que vous souhaitez Copilot utiliser comme modèle, vous pouvez utiliser `#file: path/to/test-file.js` pour fournir le chemin d'accès au fichier et inclure cette information dans l'invite.\n\n## Exemple de réponse\n\n> \\[!NOTE] La réponse suivante est un exemple. Les réponses Discussion avec Copilot ne sont pas déterministes, vous pouvez donc obtenir une réponse différente de celle affichée ici.\n\nCopilot fournit le plan qu'il va mettre en œuvre et le texte du code qui inclut les mocks.\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## Pour approfondir\n\n* [Ingénierie rapide pour GitHub Copilot Chat](/fr/copilot/using-github-copilot/prompt-engineering-for-github-copilot)\n* [Meilleures pratiques pour l’utilisation de GitHub Copilot](/fr/copilot/using-github-copilot/best-practices-for-using-github-copilot)"}