我想在模块forgotPassword中模拟函数authenticationPlugin/App,所以我正在这样做

jest.mock("authenticationPlugin/App", () => ({
    forgotPassword (email: string) {
        const msg='success'
        email='a'
        return msg
    }
}))


现在我想清除authenticationPlugin/App的模拟并为forgotPassword方法使用不同的实现

所以我做到了

jest.clearAllMocks();
jest.mock("authenticationPlugin/App", () => ({
        forgotPassword (email: string) {
            throw new Error(<any>{'err':{'message':'Network Error'}})
        }
    }))


现在,我希望在清除模块forgotPassword的模拟后,authenticationPlugin/App方法具有不同的实现,但是它不会改变...

最佳答案

如果要在每个测试中为模拟提供不同的实现,则可以改用jest.fn

扩展您的代码,看起来可能像这样:

it('returns success', () => {
    authApp.forgotPassword = jest.fn((email: string) => {
        const msg='success'
        email='a'
        return msg
    });

    // Your test code here.
});

test('returns error', () => {
    authApp.forgotPassword = jest.fn((email: string) => {
        throw new Error(<any>{'err':{'message':'Network Error'}})
    });

    // Your test code here.
});

10-02 17:18