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

我們將通過示例介紹 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 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