Я работаю над тестовыми сценариями:
, когда я запускаю отдельные тестовые сценарии, он работает нормально, но в целом, если я запускаю ошибку метания для 2 тестовых сценариев ios.
мой код TSX:
const onPasswordChange = useCallback((e) => {
setStatusAlert({});
setModel({ ...model, "password": e.target.value });
setPasswordError(null);
}, [setStatusAlert, setModel, setPasswordError]);
const showPasswordInput = useCallback((e) => {
e.preventDefault();
const emailIsEmpty = !model.email || model.email.length < 1;
setDisplayPasswordInput(!emailIsEmpty);
setEmailError(emailIsEmpty ? "Email is required" : null);
}, [model, setDisplayPasswordInput, setEmailError]);
Мои тестовые случаи:
describe("onPasswordChange", () => {
it("sets password to new value", async () => {
const expectedPassword = lorem.word();
mockedHttpHelper.get.mockImplementationOnce(jest.fn((params: IGetParams) => params.onGetSuccess({ data: { externalTypes: [] } } as AxiosResponse)));
await usingMount(
LoginFormComponent(defaultModelWithEmail),
async wrapper => {
await setTimeoutPromise(() => {
wrapper.find(LoginForm).find("LoginPasswordFormBody").invoke("onPasswordChange")({ target: { name: "password", value: expectedPassword } });
expect(wrapper.find(LoginForm).find("LoginPasswordFormBody").prop("model")).toEqual(expect.objectContaining({ password: expectedPassword }));
}, 100);
}
);
});
it("empties status alert", async () => {
const expectedError = lorem.word();
mockedHttpHelper.get.mockImplementationOnce(jest.fn((params: IGetParams) => params.onGetSuccess({ data: { externalTypes: [] } } as AxiosResponse)));
await usingMount(
<GrabStatusAlertContext>
<LoginForm model={defaultModelWithEmail} />
</GrabStatusAlertContext>,
async wrapper => {
await setTimeoutPromise(() => {
statusAlertContext.setStatusAlert({ color: "danger", text: expectedError });
expect(statusAlertContext.statusAlert).toEqual({ color: "danger", text: expectedError });
wrapper.find(LoginForm).find("LoginPasswordFormBody").invoke("onPasswordChange")({ target: { name: "password", value: expectedError } });
wrapper.update();
expect(statusAlertContext.statusAlert).toEqual({});
}, 100);
}
);
});
it("sets passwordError to null", async () => {
const passwordRequired = lorem.word();
mockedHttpHelper.get.mockImplementationOnce(jest.fn((params: IGetParams) => params.onGetSuccess({ data: { externalTypes: [] } } as AxiosResponse)));
await usingMount(
<GrabStatusAlertContext>
<LoginForm model={defaultModelWithEmail} />
</GrabStatusAlertContext>,
async wrapper => {
await setTimeoutPromise(() => {
// trigger passwordError by submitting an empty input and verify passwordError is not null
wrapper.find("form").simulate("submit");
expect(wrapper.find(LoginForm).find("LoginPasswordFormBody").prop("passwordError")).toEqual("Password is required");
wrapper.find(LoginForm).find(`input[type="password"]`).simulate("change", { target: { name: "password", value: passwordRequired } });
wrapper.update();
expect(wrapper.find(LoginForm).find("LoginPasswordFormBody").prop("passwordError")).toEqual(null);
}, 100);
}
);
});
});
Пожалуйста, помогите мне, если я смогу решить эту проблему.