Samuel Gw
Samuel Gw

Reputation: 33

How to write unit test with Higher Order Function with Jest in React JS

Hello i'm new to React and i'm trying to write a unit test on a Higher Order Functions with Jest and i don't know how to do it please can someone help me ? This is the code of my HIGHER ORDER FUNCTION below :

const updateSearchTopStoriesState = (hits, page) => (prevState) => {
    const { searchKey, results } = prevState


    const oldHits = results && results[searchKey]
        ? results[searchKey].hits
        : []


    const updatedHits = [
        ...oldHits,
        ...hits
    ]
    // returning our previous state 
    return {
        results: {
            ...results,
            [searchKey]: { hits: updatedHits, page }
        },
        isLoading: false
    }
}

export default updateSearchTopStoriesState

Upvotes: 2

Views: 916

Answers (1)

Drew Reese
Drew Reese

Reputation: 203099

Without knowing WHAT you are trying to test, or WHAT the shape of any of the parameters are, this is near impossible to answer accurately. Here are a couple of unit tests I would write:

describe("updateSearchTopStoriesState", () => {
  it("should return a function", () => {
    expect(typeof updateSearchTopStoriesState()).toBe("function");
  });

  it("should return default return value", () => {
    const { results, isLoading } = updateSearchTopStoriesState()({
      searchKey: "test"
    });

    expect(results).toEqual({ test: { hits: [] } });
    expect(isLoading).toBe(false);
  });
});

Edit spring-violet-nizth

In the sandbox I've started a third test that currently fails (admittedly likely due to my lack of context on the parameters, but should be passing based upon an internal implementation comment you left in the function code).

This should assist you in starting a unit test file for this function, but please comment if anything is unclear or this isn't quite what you are asking about.

Upvotes: 2

Related Questions