我正在尝试测试类方法的返回值。
此类方法是从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)
});