Typescript Jestでaxiosをモック化する
6859 ワード
概要
実現したかったのは主に2つ
- TypeScript x Jestでaxiosをモック化する方法
- ローカルに置いたJSONファイルを読み込んでAPIレスポンスとして扱う方法
ライブラリバージョン
package.jsonより
- typescript: 4.1.3
- jest: 26.6.0
- axios: 0.21.1
実装
data.json
{
"name": "Taro",
"age": 20
}
Person.ts
export class Person {
name: string;
age: number
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
テスト対象のコード
import axios from "axios";
import { Person } from "./Person";
export class PersonConsumer {
async get(): Promise<Person> {
return (await axios.get<Person>('https://hoge.com')).data;
}
}
テストコード
import axios from "axios";
import data from "../data/data.json";
import { PersonConsumer } from "./PersonConsumer";
jest.mock('axios');
describe('PersonConsumer', () => {
it('return person from api', async () => {
const mockedAxios = axios as jest.Mocked<typeof axios>
mockedAxios.get.mockResolvedValue({data: data});
const target = new PersonConsumer();
const actual = await target.get();
expect(actual.name).toBe('Taro');
expect(actual.age).toBe(20);
});
});
Author And Source
この問題について(Typescript Jestでaxiosをモック化する), 我々は、より多くの情報をここで見つけました https://qiita.com/Yoghurt/items/8885e6b6db8e7dc263dd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .