gpt4 book ai didi

reactjs - 如何 Jest 模拟 AWS 库

转载 作者:行者123 更新时间:2023-12-03 13:57:10 24 4
gpt4 key购买 nike

我正在使用“aws-amplify”库中的登录方法。在 Jest 中运行测试用例时,我无法从该库调用signIn方法。

代码:

import { Auth } from "aws-amplify"; // import statement

//code for function
handleSubmit = async event => {
event.preventDefault();
this.setState({ isLoading: true });
try {
await Auth.signIn(this.state.username, this.state.password);
this.props.history.push("/dashboard");
} catch (e) {
this.setState({ isLoading: false });
}
}

测试文件:

it('calls event handler; "handleSubmit"', async()  => {   
const componentInstance = Wrapper2.dive().instance();

componentInstance.setState({
isLoading : false,
username : "demo",
password : "demo"
})
const event = {
preventDefault : () => {}
};
await componentInstance.handleSubmit(event);
expect(componentInstance.state.isLoading).toEqual(true);
});

在运行上面的测试用例时,它总是进入handleSubmit()函数的catch部分。

如何实现从“aws-amplify”库调用signIn方法并测试正面/负面场景?

指导我,提前致谢。

最佳答案

实现此目的的一种方法是模拟登录函数并使用它。对于测试文件中的导入 Auth

import { Auth } from "aws-amplify";

然后在调用handleSubmit函数之前模拟signIn函数

it('calls event handler; "handleSubmit"', async()  => {   
const componentInstance = Wrapper2.dive().instance();

componentInstance.setState({
isLoading : false,
username : "demo",
password : "demo"
})
const event = {
preventDefault : () => {}
};
Auth.signIn = jest.fn().mockImplementation(
() => {
// return whatever you want to test
});
await componentInstance.handleSubmit(event);
expect(componentInstance.state.isLoading).toEqual(true);
});

关于reactjs - 如何 Jest 模拟 AWS 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51649891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com