У меня есть функция, которую я хотел бы использовать для тестирования в TypeScript. В моих тестах все, что меня волнует, это json
и status
. Однако при использовании Jest's jest.spyOn
тип моей смоделированной функции устанавливается так, чтобы он возвращал тип http Response
. Это неудобно, так как это означает, что мне нужно вручную перейти к реализации множества функций и свойств, которые не имеют отношения к делу и являются произвольными.
Я подозреваю, что здесь есть какой-то способ использовать частичный тип, чтобы обеспечить более качественное и полезное моделирование путем переопределения возвращаемого типа только для того, что меня волнует. Как бы я поступил так?
export function mockApi(json: object, status: number): void {
jest.spyOn(
myApiModule,
'methodWhichReturnsAResponse'
).mockImplementation(() =>
Promise.resolve({
json: () => Promise.resolve(json),
status,
// Below here is to appease jest types (not needed for
// testing purposes at the time of writing)
headers: {
has: (name: string) => true,
// get, set, etc...
},
ok: true,
redirected: false,
// and about 10 other properties which exist on the Response type
// ...
}),
);
}