簡體   English   中英

如何在 Jest 中模擬 Promise 解析功能

[英]How to mock Promise resolve function in Jest

我正在使用 Jest + Enzyme。 我有一個功能,

     submitHandler = values => {
         return new Promise((resolve, _) => {
                saveSomething({values, resolve});
         }
     }

我的測試:

    it('Should call saveSomething on form submit', () => {
        const values = {firstName: 'FName', lastname: 'LName'};
        const {enzymeWrapper, props} = setup();
        enzymeWrapper.find('Formik').simulate('submit', values);
        expect(props.saveSomething).toBeCalledWith({
            values: {
                ...values,
                contactLanguage: LOCALE_TO_LANGUAGE_MAP[props.locale],
            },
        });
    });

目前,我的測試失敗了。 錯誤:

    Error: expect(jest.fn()).toBeCalledWith(...expected)

    - Expected
    + Received

    @@ -1,6 +1,7 @@
      Object {
    +   "resolve": [Function anonymous],
        "values": Object {
          "contactLanguage": "FRENCH",
          "firstName": "FName",
          "lastname": "LName",
        },,

問題:如何模擬解析功能?

Jest mocks 有一種內在的方法來處理 Promise 的解決和拒絕。 詳情請參考Jest Mock API

mockResolvedValue方法就是用於這個目的。

只需通過對jest.fn()的簡單調用來模擬您的 submitHandler 並添加mockResolvedValue方法。

您也可以使用mockRejectValue方法測試拒絕。

暫無
暫無

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

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