单元测试玩笑节点获取

时间:2020-06-25 18:16:43

标签: node.js jestjs fetch

我正在尝试测试类方法的返回值。

此类方法是从API获取的。

在测试时,我决定模拟提取请求,以免打入网络。

我将如何去做?最好没有外部库。

ClassA

class ClassA {
    constructor() {
    }

    fetchSpotDate(pair) {
        const url = 'url';
        const query = 'query';
        fetch(url + query)
            .then(response => response.json())
            .then(json => new Date(json.settlement_date + "Z"))
            .catch(e => {
                log.error(e)
            });
    }
}

测试

it('should return correct date object format',  async () => {
        const mockSuccessResponse = {
          foo: 'bar', 
          settlement_date: '2020-06-29T00:00:00' 
        };
        const mockJsonPromise = Promise.resolve(mockSuccessResponse);
        const mockFetchPromise = Promise.resolve({json: () => mockJsonPromise})
        const expectedReturn = new Date("2020-06-29T00:00:00Z")
        global.fetch = jest.fn(() => mockFetchPromise);
        const classA = new ClassA();

        const result = await classA.fetchSpotDate('EURUSD')
        expect(???result Promise value???).toEqual(expectedReturn)
    });

0 个答案:

没有答案