Movatterモバイル変換


[0]ホーム

URL:


Skip to main content
GitHub Docs

Creating mock objects to abstract layers

Copilot Chat can help with creating mock objects that you can use for unit tests.

When creating unit tests, it's important to ensure they're isolated and not depending on external services. One way to achieve this is to create mock objects that abstract layers of your application. Copilot Chat can help you generate the code you need to create these mock objects.

Example scenario

Imagine a website built with TypeScript which displays a list of runners. You have a service which fetches the runners from a database, and the server-side code which uses this service. You want to test the server-side code, but you don't want to make a call to the database. You can ask Copilot Chat to generate a mock object for the service.

// SvelteKit example at +page.server.tsimport servicefrom'./service';exportasyncfunctionload({ params }) {const runner =await service.getRunner(params.id);return {    runner  };}

Example prompt

This example assumes you are usingvitest for your tests, but will work with other test runners.

Copilot Chat prompt
/tests Create a unit test to ensure the service is called correctly. Mock the service object.

If you have an existing test you wish Copilot to use as a model, you can use#file: path/to/test-file.js to provide the path to the file, and include this information in the prompt.

Example response

Note

The following response is an example. Copilot Chat responses are non-deterministic, so you may get a different response from the one shown here.

Copilot provides the plan it will implement and the code text which includes the mocks.

import { describe, it, expect, vi, beforeEach }from'vitest';import { load }from'./+page.server.ts';// Mock the entire service modulevi.mock('./service',() => ({default: {getRunner: vi.fn()  }}));// Import the mocked serviceimport servicefrom'./service';describe('load function',() => {const mockRunner = {id:'123',name:'Test Runner',status:'active'  };beforeEach(() => {// Reset mock before each test    vi.resetAllMocks();// Setup default mock implementation    (service.getRunnerasany).mockResolvedValue(mockRunner);  });it('should fetch runner with correct id',async () => {const params = {id:'123' };const result =awaitload({ params });expect(service.getRunner).toHaveBeenCalledWith('123');expect(service.getRunner).toHaveBeenCalledTimes(1);expect(result).toEqual({runner: mockRunner });  });});

Further reading


[8]ページ先頭

©2009-2025 Movatter.jp