どのようにVoestでノードのフェッチをモックアップする
10502 ワード
したいこと
私はモックが欲しいnode-fetch with Vitest , ユニットテストフレームワークです.Jest ノードをモックアップする方法を紹介します.
バイパスモジュール
Jestはテスト中のモジュール全体をモックアウトすることができます.これは、コードが正しくそのモジュールから関数を呼び出している場合にテストに便利です.しかし、時にはテストファイルにmockedしたモジュールの部品を使用したい場合があります.この場合、モックインされたバージョンではなく、元の実装にアクセスします.
日本製鋼所io
Vitestは大部分の冗談で互換性があります、しかし、最も活気がありませんjest.requireActual
ヘルパーは上記のリンクされた記事で使用されます.
この記事はモックの方法を紹介しますnode-fetch
使わずにjest.requireActual
vitestを使用して.
必須環境
必要な依存関係の追加
Vitestはまだ(少なくとも日本で)一般的ではなかったので、必要な依存関係をインストールする方法を示します.
npm i -D vitest vi-fetch node-fetch
テストする関数
簡単なテスト機能を作りました.この関数はcount
アクセスへの応答に関するJSONの値https://hogehoge.hogehoge.hogehoge getメソッドを使用します.
import fetch from "node-fetch";
export const getCountNode = async () => {
const response = await fetch("https://hogehoge.hogehoge.hogehoge"); // GET
const countJson = await response.json(); // Get response body as json
return countJson.count; // Return the value of count key in the response
};
テストコードの書き込み
前に述べたようにjest.requireActual
ヘルパーなので、以下のソースコードをthe answer E . Colemanらによってスタックオーバーフローで書かれた.
import { describe, it, expect, vi } from "vitest";
import fetch from "node-fetch";
import { getCountNode } from "./getCountNode";
describe("sample", () => {
it("hello", async () => {
vi.mock("node-fetch");
fetch.mockReturnValue(
Promise.resolve({ json: () => Promise.resolve({ count: 33 }) })
);
const result = await getCountNode();
expect(result).toBe(33);
});
});
テスト
この試験の結果を以下に示す.この結果は別のテストを同時に実行したので「2パス」を示します.
テスト結果
テストで期待値を変更しました.このテストは失敗しました.
import { describe, it, expect, vi } from "vitest";
import fetch from "node-fetch";
import { getCountNode } from "./getCountNode";
describe("sample", () => {
it("hello", async () => {
vi.mock("node-fetch");
fetch.mockReturnValue(
Promise.resolve({ json: () => Promise.resolve({ count: 33 }) })
);
const result = await getCountNode();
expect(result).toBe(31);
});
});
この結果は次の通りである.
注釈
この記事はもともと日本語で書かれています.
vitestでノード取得のフェッチを模擬する
禅dev
Reference
この問題について(どのようにVoestでノードのフェッチをモックアップする), 我々は、より多くの情報をここで見つけました
https://dev.to/akirakashihara/how-to-mock-node-fetch-with-vitest-4jni
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
npm i -D vitest vi-fetch node-fetch
簡単なテスト機能を作りました.この関数は
count
アクセスへの応答に関するJSONの値https://hogehoge.hogehoge.hogehoge getメソッドを使用します.import fetch from "node-fetch";
export const getCountNode = async () => {
const response = await fetch("https://hogehoge.hogehoge.hogehoge"); // GET
const countJson = await response.json(); // Get response body as json
return countJson.count; // Return the value of count key in the response
};
テストコードの書き込み
前に述べたようにjest.requireActual
ヘルパーなので、以下のソースコードをthe answer E . Colemanらによってスタックオーバーフローで書かれた.
import { describe, it, expect, vi } from "vitest";
import fetch from "node-fetch";
import { getCountNode } from "./getCountNode";
describe("sample", () => {
it("hello", async () => {
vi.mock("node-fetch");
fetch.mockReturnValue(
Promise.resolve({ json: () => Promise.resolve({ count: 33 }) })
);
const result = await getCountNode();
expect(result).toBe(33);
});
});
テスト
この試験の結果を以下に示す.この結果は別のテストを同時に実行したので「2パス」を示します.
テスト結果
テストで期待値を変更しました.このテストは失敗しました.
import { describe, it, expect, vi } from "vitest";
import fetch from "node-fetch";
import { getCountNode } from "./getCountNode";
describe("sample", () => {
it("hello", async () => {
vi.mock("node-fetch");
fetch.mockReturnValue(
Promise.resolve({ json: () => Promise.resolve({ count: 33 }) })
);
const result = await getCountNode();
expect(result).toBe(31);
});
});
この結果は次の通りである.
注釈
この記事はもともと日本語で書かれています.
vitestでノード取得のフェッチを模擬する
禅dev
Reference
この問題について(どのようにVoestでノードのフェッチをモックアップする), 我々は、より多くの情報をここで見つけました
https://dev.to/akirakashihara/how-to-mock-node-fetch-with-vitest-4jni
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import { describe, it, expect, vi } from "vitest";
import fetch from "node-fetch";
import { getCountNode } from "./getCountNode";
describe("sample", () => {
it("hello", async () => {
vi.mock("node-fetch");
fetch.mockReturnValue(
Promise.resolve({ json: () => Promise.resolve({ count: 33 }) })
);
const result = await getCountNode();
expect(result).toBe(33);
});
});
この試験の結果を以下に示す.この結果は別のテストを同時に実行したので「2パス」を示します.
テスト結果
テストで期待値を変更しました.このテストは失敗しました.
import { describe, it, expect, vi } from "vitest";
import fetch from "node-fetch";
import { getCountNode } from "./getCountNode";
describe("sample", () => {
it("hello", async () => {
vi.mock("node-fetch");
fetch.mockReturnValue(
Promise.resolve({ json: () => Promise.resolve({ count: 33 }) })
);
const result = await getCountNode();
expect(result).toBe(31);
});
});
この結果は次の通りである.
注釈
この記事はもともと日本語で書かれています.
vitestでノード取得のフェッチを模擬する
禅dev
Reference
この問題について(どのようにVoestでノードのフェッチをモックアップする), 我々は、より多くの情報をここで見つけました
https://dev.to/akirakashihara/how-to-mock-node-fetch-with-vitest-4jni
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import { describe, it, expect, vi } from "vitest";
import fetch from "node-fetch";
import { getCountNode } from "./getCountNode";
describe("sample", () => {
it("hello", async () => {
vi.mock("node-fetch");
fetch.mockReturnValue(
Promise.resolve({ json: () => Promise.resolve({ count: 33 }) })
);
const result = await getCountNode();
expect(result).toBe(31);
});
});
この記事はもともと日本語で書かれています.
vitestでノード取得のフェッチを模擬する
禅dev
Reference
この問題について(どのようにVoestでノードのフェッチをモックアップする), 我々は、より多くの情報をここで見つけました https://dev.to/akirakashihara/how-to-mock-node-fetch-with-vitest-4jniテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol