Как смоделировать контекст koa в функции, которая возвращает функцию с параметром context - PullRequest
1 голос
/ 14 января 2020

У меня есть файл, myFunction.ts, который определяет и экспортирует одну функцию:

export function MyFunction() {
    return async (ctx: Koa.Context) => {
        //some work happens in here
    };
}

Эта функция вызывается в файле промежуточного программного обеспечения Koa и наследует ctx от предыдущего промежуточного программного обеспечения. Как создать макет ctx для проверки MyFunction() в этом случае?

1 Ответ

0 голосов
/ 05 марта 2020

Я использую библиотеку Shopify @ shopify / jest-koa-mocks . Они используют Koa's createContext под капотом, если вы хотите сами его построить.

import { createMockContext } from '@shopify/jest-koa-mocks';
import { myFunction } from './myFunction.js';

describe('middleware being tested', () => {

    let ctx;
    let myMiddleware;

    beforeEach(() => {
        ctx = createMockContext();
        ctx.addAnythingYouWant = jest.fn();
        myMiddleware = myFunction();
    });

    test('calls function addAnythingYouWant', async () => {
        await myMiddleware(ctx);
        expect(ctx.addAnythingYouWant).toHaveBeenCalledTimes(1);
    });
});
...