【发布时间】:2019-10-19 20:33:51
【问题描述】:
我在嘲笑 expo 和 Permissions 模块,但是在调用 Permissions.AskAsync Permissions 时未定义。
问题看起来像这个问题。 Using Jest to mock named imports
使用了提供的答案,但没有用。
我已经嘲笑了 axios,它有效。对 expo 模块做同样的事情是行不通的。
我要测试的功能:
checkPermission = async () => {
const {statusCamera} = await Permissions.askAsync(Permissions.CAMERA);
// console.log(statusCamera);
this.setState({cameraPermission: statusCamera});
const {statusCameraRoll} = await Permissions.askAsync(Permissions.CAMERA_ROLL);
this.setState({cameraRollPermission: statusCameraRoll});
};
测试:
describe("Test the Permission function", () => {
it('should return rejected permission.', async function () {
const wrapper = shallow(<Photo2/>);
const instance = wrapper.instance();
await instance.checkPermission();
expect(instance.state("cameraPermission")).toBeFalsy();
});
});
我用于博览会的模拟:
jest.mock('expo', ()=>({
Permissions: {
askAsync: jest.fn()
}
}))
并尝试过 (在 mocks/expo.js 文件中)
export default {
Permissions: {
askAsync: jest.fn(() => {
return "SOMETHING"
})
}
}
并尝试过 (在 mocks/expo.js 文件中)
jest.mock('expo', ()=>({
Permissions: {
askAsync: jest.fn()
}
}));
错误:“TypeError:无法读取未定义的属性‘askAsync’”
此错误发生在调用Permissions.askAsyc 的行上。所以权限是未定义的。 (也检查了console.log(Permissions)
我预计 instance.state("cameraPermission") 是虚假的,但它在到达该行之前就崩溃了。
【问题讨论】:
标签: permissions mocking jestjs expo