TypeScript 中的 Jest Mock

Rana Hasnain Khan 2022年7月18日
TypeScript 中的 Jest Mock

我們將通過示例介紹 Jest Mock 以及如何在 TypeScript 中使用它。

TypeScript 中的 Jest Mock

在開發需要為使用者提供完美的商業應用程式時,我們必須確保每個模組按照我們希望的方式工作。為此,我們在 TypeScript 中使用 Jest 模擬。

Jest mock 是一個大型 Web 應用程式的測試框架。通過使用 mock 函式,我們可以監視由某些不同程式碼間接呼叫的函式的模組,而不僅僅是測試輸出。

如果沒有給出實現,則呼叫 mock 函式時將返回 undefined。我們可以很容易地使用 jest.mock() 函式,如下所示。

import * as dependency from '../someModule';
jest.mock('../someModule');

jest.mock() 函式會改變依賴的型別,因此我們需要在 TypeScript 中呼叫 jest.mock() 函式後使用型別轉換。我們可以使用 TypeScript 中的 typeof 方法輕鬆呼叫型別轉換。

讓我們來看一個示例,在該示例中,我們將使用自動模擬來測試我們匯入到 TypeScript 中的模組,如下所示。

import { testClass } from './testClass';

jest.mock('./testClass');

const mockClass = <jest.Mock<testClass>>testClass;

但是如果我們想手動模擬模組或類,我們也可以輕鬆做到。讓我們看一個示例,我們將在其中手動模擬該類,如下所示。

import testClass from './testClass';
import testClassDependency from './testClassDependency';

const testMockClassDependency = jest.fn<testClassDependency>(() => ({

}));

it('Throw an error', () => {
  const testClass1 = new testClass(testMockClassDependency());
});

正如我們從上面的示例中看到的,testMockClassDependency 將建立一個模擬物件例項。我們可以使用類、型別或介面來代替 testClassDependency

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn