Search code examples
javascriptfilejestjsblob

Write unit test for a function convert file to base64 with jest


This is my function:

/**
 * Convert file to base64 by FileReader.
 *
 * @param file File object.
 * @return Promise of result.
 */
export function getBase64(file: File): Promise<FileReader['result'] | ProgressEvent<FileReader>> {
  return new Promise((res, rej) => {
    const reader = new FileReader()
    reader.readAsDataURL(file)
    reader.onload = () => res(reader.result)
    reader.onerror = error => rej(error)
  })
}

I know the key is create a File object but don't know how to.


Some update:

the key of this problem is how to use constructor of File object.

See: https://developer.mozilla.org/en-US/docs/Web/API/File/File


Solution

  • This is how I did it

    test('should return base64 string', async () => {
      const file = new File([''], 'file');
      await expect(getBase64(file)).resolves.toContain('data:application');
    });
    
    test('should fails with an error', async () => {
      await expect(getBase64({} as File)).rejects.toThrowError();
    });