test("length is 1", () => { expect(Promise.resolve).toHaveLength(1); }); describe("normal behavior", () => { test("returns a Promise", () => { const resolvedPromise = Promise.resolve(); expect(resolvedPromise).toBeInstanceOf(Promise); }); test("returned Promise is resolved with given argument", () => { let fulfillmentValue = null; Promise.resolve("Some value").then(value => { fulfillmentValue = value; }); runQueuedPromiseJobs(); expect(fulfillmentValue).toBe("Some value"); }); test("works with subclasses", () => { class CustomPromise extends Promise {} const resolvedPromise = CustomPromise.resolve("Some value"); expect(resolvedPromise).toBeInstanceOf(CustomPromise); let fulfillmentValue = null; resolvedPromise.then(value => { fulfillmentValue = value; }); runQueuedPromiseJobs(); expect(fulfillmentValue).toBe("Some value"); }); }); describe("errors", () => { test("this value must be an object", () => { expect(() => { Promise.resolve.call("foo"); }).toThrowWithMessage(TypeError, "foo is not an object"); }); });