微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将文本传递给表单元素

如何解决将文本传递给表单元素

我有一个表单元素,它接受电子邮件和密码,然后允许登录。我正在为特定功能登录)编写测试,并查看登录后是否显示正确的文本。问题是我只能在登录登录已经在电子邮件地址部分提供了一些文本。无论如何我可以提供电子邮件作为组件测试的一部分吗?作为参考,这是我要测试的组件:


  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 举报,一经查实,本站将立刻删除。