大家好,我现在正在使用以下库
https://www.npmjs.com/package/react-native-biometrics
我的项目,但我停留在这里,当我试图写的单元测试,我嘲笑了如下库
import ReactNativeBiometrics, { BiometryTypes } from 'react-native-biometrics';
jest.mock ('react-native-biometrics', () =>
{
class ReactNativeBiometrics {
constructor(){
}
isSensorAvailable() {
}
}
return ReactNativeBiometrics;
});
现在我想嘲笑
BiometryTypes
但它没有被嘲笑,任何人都可以给予一些想法,这是如何可以被嘲笑。
导出生物测定类型,如下所示
export declare const BiometryTypes: {
TouchID: string;
FaceID: string;
Biometrics: string;
};
我尝试像下面,但它不工作
import { BiometryTypes } from 'react-native-biometrics';
import * as all from 'react-native-biometrics';
const TouchID = 'TouchID' ;
all.BiometryTypes = {
TouchID: TouchID,
FaceID: TouchID
};
1条答案
按热度按时间svgewumm1#
您可以在工厂函数中合并命名模拟和默认模拟:
Jest文档阐明了为什么需要这样做:
ES6模块使用工厂参数默认导出时,需要指定
__esModule: true
属性,该属性一般由Babel / TypeScript生成,这里需要手工设置,导入默认导出时,是从导出对象中导入名为default
的属性的指令注意!使用这种方法,对象
BiometryTypes
将被永远地模仿,而您可能希望测试它的不同变体。也许doMock
和unmock
可以帮助克服这个问题,但在我看来,更可靠的是创建几个.test.js
文件,每个文件都将以独特的方式模仿BiometryTypes
(例如FaceID_and_TouchID.test.js
,TouchID-only.test.js
等)。jest.mock
非常神奇,因为它被提升到最顶端,如果值已经被其他模块或同一模块中的闭包捕获,使用unmock
/doMock
可能会中断。