{"meta":{"title":"Erstellen von Pseudoobjekten zum Abstrahieren von Schichten","intro":"Copilot-Chat kann beim Erstellen von Pseudoobjekten helfen, die für Komponententests genutzt werden können.","product":"GitHub Copilot","breadcrumbs":[{"href":"/de/copilot","title":"GitHub Copilot"},{"href":"/de/copilot/tutorials","title":"Anleitungen"},{"href":"/de/copilot/tutorials/copilot-chat-cookbook","title":"GitHub Copilot Chat-Cookbook"},{"href":"/de/copilot/tutorials/copilot-chat-cookbook/testing-code","title":"Testen von Code"},{"href":"/de/copilot/tutorials/copilot-chat-cookbook/testing-code/create-mock-objects","title":"Erstellen von Pseudoobjekten"}],"documentType":"article"},"body":"# Erstellen von Pseudoobjekten zum Abstrahieren von Schichten\n\nCopilot-Chat kann beim Erstellen von Pseudoobjekten helfen, die für Komponententests genutzt werden können.\n\nBeim Erstellen von Komponententests sollte sichergestellt werden, dass sie isoliert und nicht von externen Diensten abhängig sind. Dies erreichst du durch Erstellen von Pseudoobjekten, die die Schichten deiner Anwendung abstrahieren. Copilot-Chat kann dir beim Generieren des Codes helfen, den du zum Erstellen von Pseudoobjekten benötigst.\n\n## Beispielszenario\n\nStelle dir eine Website vor, die mit TypeScript erstellt wurde und eine Runnerliste anzeigt. Sie haben einen Dienst, der die Runner aus einer Datenbank abruft, und den serverseitigen Code, der diesen Dienst nutzt. Du möchtest den serverseitigen Code testen, aber keinen Aufruf an die Datenbank durchführen. Du kannst Copilot-Chat dazu auffordern, ein Pseudoobjekt für den Dienst zu generieren.\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## Beispielprompt\n\nIn diesem Beispiel wird davon ausgegangen, dass du für deine Tests [vitest](https://vitest.dev/) verwendest, aber mit anderen Testrunnern arbeitest.\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\nWenn Copilot einen vorhandenen Test als Modell verwenden soll, kannst du `#file: path/to/test-file.js` zum Angeben des Dateipfads nutzen und diese Informationen in den Prompt schreiben.\n\n## Beispielantwort\n\n> \\[!NOTE] Die folgende Antwort ist ein Beispiel. Da die Copilot-Chat-Antworten nicht deterministisch sind, erhältst du möglicherweise eine andere Antwort als die hier beschriebene.\n\nCopilot stellt den Plan bereit, den es implementieren wird, sowie den Codetext, in dem die Mock-Objekte enthalten sind.\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## Weitere Informationen\n\n* [Prompt-Engineering für GitHub Copilot Chat](/de/copilot/using-github-copilot/prompt-engineering-for-github-copilot)\n* [Bewährte Methoden für die Verwendung von GitHub Copilot](/de/copilot/using-github-copilot/best-practices-for-using-github-copilot)"}