如何解决将文本传递给表单元素
我有一个表单元素,它接受电子邮件和密码,然后允许登录。我正在为特定功能(登录)编写测试,并查看登录后是否显示正确的文本。问题是我只能在登录后登录已经在电子邮件地址部分提供了一些文本。无论如何我可以提供电子邮件作为组件测试的一部分吗?作为参考,这是我要测试的组件:
import React,{ FC,useState,FormEvent } from "react";
import { SplitFactory } from "@splitsoftware/splitio-react";
import LandingPage from "./landingPage";
const sdkConfigDefault: SplitIO.IbrowserSettings = {
core: {
authorizationKey: process.env.REACT_APP_SPLIT_API_KEY + "",key: "",},debug: true,};
const Login: FC<{}> = (props): JSX.Element => {
const [sdkConfig,setSdkConfig]: [SplitIO.IbrowserSettings,(sdkConfig: SplitIO.IbrowserSettings) => void] = useState(
sdkConfigDefault
);
const [email,setEmail]: [string,(email: string) => void] = useState("");
const login = (e: FormEvent) => {
e.preventDefault();
setSdkConfig({
core: {
...sdkConfigDefault.core,key: email,});
};
const logout = (e: FormEvent) => {
e.preventDefault();
setSdkConfig({
core: {
...sdkConfigDefault.core,});
};
return (
<div>
{sdkConfig.core.key === "" && (
<form data-testid="login"
onSubmit={(e) => {
login(e);
}}
>
Login
<br />
<label >
<div data-testid="emailId">
Email:
//This is the field that requires an Email to be used for input
<input type="text" name="email" onChange={(e) => setEmail(e.target.value)} />
</div>
<br />
<div data-testid="passId">
Password:
<input type="password" name="pw" />
</div>
</label>
<br />
//This is the part where we want to fire off a "Submit" event.
<input data-testid="button" type="submit" value="Submit" />
</form>
)}
{sdkConfig.core.key !== "" && (
<div>
<SplitFactory config={sdkConfig}>
<LandingPage />
</SplitFactory>
<form onSubmit={(e) => logout(e)}>
<input type="submit" value="Log out" />
</form>
</div>
)}
</div>
);
};
export default Login;
这就是我要测试的内容,正如您所看到的,只要我没有为电子邮件的输入元素提供输入,我就无法触发点击事件。有什么办法可以解决这个问题吗?
import React from 'react';
import {render,cleanup,fireEvent} from 'react-testing-library';
import Counter from './Counter';
afterEach(cleanup);
test('<Login/>',()=>{
const {getByTestId}=render(<Login/>);
const Button=getByTestId('button');
expect(Button.tagName).toBe('INPUT');
expect(Button.textContent).toBe('Submit');
fireEvent.click(Button);
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。