{"meta":{"title":"Criação de objetos fictícios para abstrair camadas","intro":"O Bate-papo do Copilot pode ajudar na criação de objetos fictícios que você pode usar para testes de unidade.","product":"GitHub Copilot","breadcrumbs":[{"href":"/pt/copilot","title":"GitHub Copilot"},{"href":"/pt/copilot/tutorials","title":"Tutoriais"},{"href":"/pt/copilot/tutorials/copilot-chat-cookbook","title":"Livro de Receitas do GitHub Copilot Chat"},{"href":"/pt/copilot/tutorials/copilot-chat-cookbook/testing-code","title":"Como testar o código"},{"href":"/pt/copilot/tutorials/copilot-chat-cookbook/testing-code/create-mock-objects","title":"Criar objetos fictícios"}],"documentType":"article"},"body":"# Criação de objetos fictícios para abstrair camadas\n\nO Bate-papo do Copilot pode ajudar na criação de objetos fictícios que você pode usar para testes de unidade.\n\nAo criar testes de unidade, é importante garantir que eles estejam isolados e não dependam dos serviços externos. Uma maneira de fazer isso é criar objetos fictícios que abstraem camadas do seu aplicativo. O Bate-papo do Copilot pode ajudar você a gerar o código necessário para criar esses objetos fictícios.\n\n## Cenário de exemplo\n\nImagine um site criado com TypeScript que exibe uma lista de corredores. Você tem um serviço que busca os executores de um banco de dados e o código do lado do servidor que usa esse serviço. Você quer testar o código do lado do servidor, mas não quer fazer uma chamada para o banco de dados. Você pode solicitar que o Bate-papo do Copilot gere um objeto fictício para o serviço.\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## Solicitação de exemplo\n\nEste exemplo pressupõe que você esteja usando [vitest](https://vitest.dev/) para seus testes, mas funciona com outros executores de teste.\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\nSe você tem um teste existente que deseja que o Copilot use como modelo, poderá usar o `#file: path/to/test-file.js` para fornecer o caminho para o arquivo e incluir essas informações no prompt.\n\n## Exemplo de resposta\n\n> \\[!NOTE] A resposta a seguir é um exemplo. Respostas do Bate-papo do Copilot são não determinísticas, portanto, você pode obter uma resposta diferente da mostrada aqui.\n\nO Copilot fornece o plano que implementará e o texto do código que inclui as simulações.\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## Leitura adicional\n\n* [Engenharia de prompts para o GitHub Copilot Chat](/pt/copilot/using-github-copilot/prompt-engineering-for-github-copilot)\n* [Práticas recomendadas para usar GitHub Copilot](/pt/copilot/using-github-copilot/best-practices-for-using-github-copilot)"}