I have the following jest test
it("should return props on stage.e.com", async () => {
((savedStoriesService as unknown) as jest.Mock).mockReturnValue({
getStoriesFromList: jest.fn().mockResolvedValue([]),
});
const jwt = mockJwt({
custom_attributes: { CustomerType: "Subscribed" },
});
const result = await getServerSideProps(({
req: {
headers: {
host: <redacted>,
authorization: `Bearer ${jwt}`,
},
},
} as unknown) as GetServerSidePropsContext);
expect(result).toMatchObject({
props: {
stories: [],
isSubscriber: true,
isLapsed: false,
},
});
});
I get the following error
TypeError: _stories.savedStoriesService.getStoriesFromList is not a function
149 | const parsedJwt = parseJwtFromRequest(ctx.req);
150 |
> 151 | const stories = await savedStoriesService.getStoriesFromList(
| ^
152 | ctx.req.headers?.authorization,
153 | { cursor: "" },
154 | );
I have a class called StoriesService
like so
export class StoriesService {
...
public getStoriesFromList = async (
authToken: string,
options: GetStoriesOptions,
): Promise<Story[]> => {
...
}
...
}
export const savedStoriesService = new StoriesService();
How would I go about mocking this class?
CodePudding user response:
you can mock it with:
jest.spyOn(savedStoriesService, 'getStoriesFromList').mockResolvedValueOnce(<the value that you want to return>)