我正试图在jest的帮助下测试一个特定的场景。
SomeClient
从some/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);
}