Как смоделировать асинхронную функцию, используя Jest Framework? - PullRequest
0 голосов
/ 08 октября 2018

Я попытался смоделировать асинхронную функцию, которая выполняет вызов службы и обрабатывать и разрешить обещание для асинхронной функции.поэтому в приведенном ниже коде это не издевается по какой-то причине, любая идея, что я реализовал неправильно?

Любой пример, как смоделировать асинхронную функцию с кодом ниже, будет высоко оценен.

main.ts

export async function getMemberInfoCache(tokenID: string): Promise < IInfoObj[] > {
    if (!tokenID) {
        throw new Error("tokenID needed for getMemberInfoCache");
    }
    const cacheObj: IGetCacheRequest = {
        key: tokenID,
        cachetype: "memberInfoCache"
    };
    const memberInfo = await CacheController.getInstance().getDetailsWrapper(cacheObj);

    const specialtyMemberObjs: any = [];
    const cacheArray: IspecialtyMemberInfo = memberInfo.cacheobject.specialtyMemberInfo;
        memberObj.lastName = member.memberInfo.lastName;
        memberObj.dateOfBirth = member.memberInfo.dateOfBirth;

        specialtyMemberObjs.push(memberObj);
    });

    return specialtyMemberObjs;
}

main.spec.ts

import {
    getMemberInfoCache
} from "./main.ts"
jest.mock(. / main.ts)

describe("Testing afterSpread passMakeResponse", () => {
    let callCacheFunction;
    beforeEach(async () => {
        callCacheFunction = await getMemberInfoCache.mockImplementation(() => {
            Promise.resolve([{
                key: value
            }]);
        });

    });
    it('should call afterSpread', function() {
        expect(callCacheFunction).toHaveBeenCalled();
    });

});

1 Ответ

0 голосов
/ 08 октября 2018

Функции Aysnc - это просто функции, которые возвращают обещание.Вам просто нужно смоделировать функцию, как вы это сделали, используя jest.mock, а затем предоставить ложное возвращаемое значение.Вот один из способов написать тест для функции getMemberInfoCache.

describe("Testing afterSpread passMakeResponse", async () => {
    it('should call afterSpread', function() {
      getMemberInfoCache.mockReturnValue(Promise.resolve([{
        key: value
      }]);

      await getMemberInfoCache();

      expect(callCacheFunction).toHaveBeenCalled();
    });

});

Следует отметить, что jest.mock заменит для вас getMemberInfoCache, поэтому всякий раз, когда вы вызываете getMemberInfoCache в своем тестефайл будет вызывать версию с заглушкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...