reactdesign
reactdesign

Reputation: 307

mockRejectedValueOnce is not a function

Writing test for a functional component that uses a service. Trying to test scenario when service returns error. But getting error "mockRejectedValueOnce is not a function". Can someone please help.

Test scenarios where by data is received from service passes, so not missing a dependency.

import {render, cleanup, wait} from '@testing-library/react';
import '@testing-library/jest-dom/extend-expect'
import ChatList from './../components/ChatList';
import getMessages from "./../service";

jest.mock("./../service");

describe("ChatList renders chat",()=>{

    it("renders error when error occurs during data fetch",()=>{
        getMessages.mockRejectedValueOnce('an error');
        const {getByTestId, queryByTestId} = render(<ChatList/>);
        expect(getMessages).toHaveBeenCalledTimes(1);
        wait(() => {
            expect(queryByTestId("messages-list")).toBeNull();
            expect(getByTestId("error-wrapper")).toBeInTheDocument();
        });
    });

});

message service looks like below:

export default function getMessages() {
    return new Promise(function(resolve, reject) {
       //array of messgaes

    });
};

Actual results:

TypeError: _service2.default.mockRejectedValueOnce is not a function

      at Object.it (src/_tests_/ChatList.test.js:48:80)
      at process._tickCallback (internal/process/next_tick.js:68:7)

Upvotes: 5

Views: 7944

Answers (1)

reactdesign
reactdesign

Reputation: 307

I resolved above by changing above code mockRejectedValueOnce to mockImplementation:

getMessages.mockImplementation(() => Promise.reject("error"));

Upvotes: 3

Related Questions