从Jest mock中获取Typescript对象



我正试图在jest的帮助下测试一个特定的场景。

SomeClientsome/module导出为非默认类,并具有构造函数和类似的方法之一

SomeClient(string endpoint, string token)getProperties(): Promise<Properties>

ConnectivityManager有一个方法isConnected,其签名类似

public static async isConnected(someClient: SomeClient): Promise<boolean>,也称为someClient.getProperties()

在测试类ConnectivityManager.test.ts中,我的代码如下

import { SomeClient } from 'some/module';
jest.mock('some/module', () => {
return {
SomeClient: jest.fn().mockImplementation(() => {
return {
getProperties: (): Promise<Properties> =>
new Promise((resolve) => {
resolve(mockResponseObject);
})
};
})
};
});
test('isConnected should be able to return true if SomeClient returns Properties', async () => {
const result = await ConnectivityManager.isConnected(someClientMock); 
//someClientMock how do I get the mock object of type SomeClient to pass here?
}

如何将类型为SomeClient的mock对象传递给ConnectivityManager.isConnected

如果ConnectivityManager.isConnected只使用SomeClient.getProperties.

您可以执行以下操作:

import { SomeClient } from 'some/module';
test('isConnected should be able to return true if SomeClient returns Properties', async () => {
//setup
const someClientMock = { getProperties: () => Promise.resolve(mockResponseObject) } as any as SomeClient;
//act
const result = await ConnectivityManager.isConnected(someClientMock); 
//assert
expect(result).toBe(true);
}

最新更新