如何解决嘲笑类星体和打字稿
我想在测试中模拟Amplify Auth服务。没有错误,但是由于我的模拟,测试无法正常工作。
这是我要测试的代码:
signIn(): void {
if (!this.valid) return;
this.loading = 1;
this.$Auth
.signIn(this.email,this.password)
.then(() => this.$router.push({ name: "homeManagement" }))
.catch((err: any) => (this.errorMessage = err.message))
.finally(() => (this.loading = 0));
}
这是测试:
const $t = jest.fn();
$t.mockReturnValue("");
const $Auth = jest.fn();
$Auth.mockReturnValue({
code: "UserNotFoundException",name: "UserNotFoundException",message: "User does not exist."
});
const factory = mountFactory(LoginForm,{
mount: {
mocks: {
$Auth
}
}
});
describe("LoginForm",() => {
it("User not found",async () => {
const wrapper = factory();
await wrapper.setData({
email: "david@gmail.com",password: "Qwer321"
});
await wrapper.vm.signIn();
expect(wrapper.vm.$data.errorMessage.length).not.toEqual(0);
});
});
解决方法
想出了一个解决方案,但也许有更好的冲洗承诺来模拟Amplify调用:
const $Auth = jest.fn();
$Auth.signIn = () => Promise.resolve();
describe("LoginForm",() => {
it("User does not exist",async () => {
const wrapper = factory();
await wrapper.setData({
email: "david@gmail.com",password: "Qwer321",valid: true
});
await wrapper.vm.signIn();
await flushPromises();
expect(wrapper.vm.$data.errorMessage.length).not.toEqual(0);
});
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。