簡體   English   中英

如何在玩笑中更改鈎子狀態的值?

[英]How to change value of hook state in jest?

我是新來的笑話。 我正在嘗試在玩笑中更改掛鈎狀態。但我找不到任何用於實現相同功能的文檔。以下是我在登錄屏幕中的掛鈎狀態。

const [form, setForm] = React.useState({
    email: "",
    phoneNumber: "",
    password: "",
    signUpType: SignUpType.PHONE_NUMBER,
  });

我想在測試時將signUpType的狀態signUpTypeEMAIL 。如何實現?我已經完成了以下操作

it("Email validation", () => {
    const email = "sample.s@abc.com";
    // Stub the initial state
    const stubInitialState = [{ signUpTyp: "EMAIL" }];
    React.useState = jest.fn().mockReturnValue([stubInitialState, {}]);

    const tree = mount(
      <Provider store={configureStore}>
        <SignIn />
      </Provider>
    );
    expect(tree.find('CustomTextInput[attrName="email"]').prop("value")).toBe(
      ""
    );
    expect(email).toMatch(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/);
  });

但是上面的代碼對我不起作用。請幫我找到解決方案。此外,根據用戶的選擇, TextInput將是emailphoneNumebr

你可以嘗試使用jest.spyOn api 來模擬React.useState方法:

const stubInitialState = [{ signUpTyp: "EMAIL" }];
const mockedSetform = jest.fn();

jest.spyOn(React, 'useState').mockReturnValue([stubInitialState, mockedSetform]);

jest.spyOn

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM