在使用 AWS Amplify 进行前端开发时,很多情况下我们需要使用第三方库来辅助开发。然而,在使用 Mock 模式进行开发时,可能会出现 Mock ModuleNotFoundError 的错误,提示我们在使用第三方库时无法找到相应的模块。
解决这个问题的方法是,在我们需要 Mock 第三方库时,需要手动添加相应的 Mock 模块。以 Mock @aws-amplify/auth 的情况为例,我们可以按照以下步骤进行操作:
import { Auth } from '@aws-amplify/auth';
在引入 Mock 模块之前,先在当前文件夹下新建一个 mocks 文件夹,并在文件夹下新建一个与被 Mock 模块同名的文件,例如 @aws-amplify/auth.js。
在该文件中,我们可以使用 jest.mock() 方法来 Mock 此模块:
jest.mock('@aws-amplify/auth', () => ({
Auth: {
// 在这里进行 Mock 的操作
}
}));
Auth.currentSession = jest.fn(() => Promise.resolve({
getIdToken: () => 'mocked id token'
}));
it('should mock @aws-amplify/auth correctly', async () => {
const { getIdToken } = await Auth.currentSession();
expect(getIdToken()).toEqual('mocked id token');
});
通过手动添加 Mock 模块,我们就可以在使用 AWS Amplify 进行前端开发时愉快地使用第三方库了。