Mar*_*lik 5 response fetch typescript jestjs ts-jest
我尝试使用 ts-jest 模拟获取响应,但遇到打字稿错误
import { mocked } from 'ts-jest/utils';
import fetch from 'node-fetch';
import { getInstallationAccessToken } from './index';
const mockedFetch = mocked(fetch, true);
describe('getInstallationAccessToken', () => {
const TODAY = new Date();
const TOMORROW = new Date();
TOMORROW.setDate(TODAY.getDate() + 1);
beforeEach(() => {
mockedFetch.mockResolvedValue({
status: 200,
json: async () => ({
token: 'MOCKED_GITHUB_INSTALLATION_ACCESS_TOKEN',
expires_at: TOMORROW.toISOString()
})
});
jest.clearAllMocks();
});
test('generates github app jwt token', async () => {
await getInstallationAccessToken();
expect(mockedJwt.sign).toBeCalledTimes(1);
});
})
Run Code Online (Sandbox Code Playgroud)
在此示例中,我收到以下错误:
Argument of type '{ status: number; json: () => Promise<{ token: string; expires_at: string; }>; }' is not assignable to parameter of type 'Promise<Response> | PromiseLike<Promise<Response>>'.
Object literal may only specify known properties, and 'status' does not exist in type 'Promise<Response> | PromiseLike<Promise<Response>>'.ts(2345)
Run Code Online (Sandbox Code Playgroud)
所以我尝试构造一个合适的Response
对象:
const response = new Response(JSON.stringify({
token: 'MOCKED_GITHUB_INSTALLATION_ACCESS_TOKEN',
expires_at: TOMORROW.toISOString()
}), { status: 200 })
mockedFetch.mockReturnValue(Promise.resolve(response));
Run Code Online (Sandbox Code Playgroud)
但是现在,该.json
方法没有在响应对象上定义
TypeError: response.json is not a function
56 | });
57 |
> 58 | const json = await response.json();
| ^
59 |
60 | if (response.status >= 300) {
61 | throw new Error(
Run Code Online (Sandbox Code Playgroud)
关于如何解决这个问题有什么想法吗?
我认为您可以再次尝试第一个模拟并强制转换您的模拟对象,Response
如下所示:
import fetch, { Response } from 'node-fetch';
mockedFetch.mockResolvedValue({
status: 200,
json: async () => ({
token: 'MOCKED_GITHUB_INSTALLATION_ACCESS_TOKEN',
expires_at: TOMORROW.toISOString()
})
} as Response); // cast to Response type since we just mock what we need to
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14009 次 |
最近记录: |